繁体   English   中英

如何使用 SQL 或 Python 从亚马逊红移中的亚马逊雪花重新创建数据库表? (全部重新创建一次,而不是一个一个地重新创建)

[英]How to recreate database tables from amazon snowflake in amazon redshift with SQL or Python? (recreate all ot once, not one by one)

我正在尝试将数据库表移动到 amazon redshift,但为了做到这一点,我必须在 redshift 中重新创建空表。

这里

我需要的是一种以某种方式一次性重新创建它们的方法。 不像上面链接中的做法,一张一张,因为有很多表。

原始数据库在亚马逊雪花中。 我需要一个简单的解决方案,而不是完全自动化的服务,因为这是需要一次性完成的事情

在 Snowflake 上,您可以执行:

SELECT get_ddl('database','{name of database}');

这将为您提供整个架构、表、视图等。来自 Snowflake 的 CREATE 或 REPLACE 语句。 您可能需要对数据类型或其他一些可能在 Snowflake 和 RedShift 之间有所不同的内容进行查找/替换,但这是最简单的方法。

INFORMATION_SCHEMA 包含有关表的详细信息 - 名称、列、数据类型、键、注释。 您可以使用“动态 sql”将它们拼接成一条 create table 语句。 下面是一个例子:

select 
    'create or replace table ' || max(table_name) || ' (\n' 
    || listagg('  ' || column_name || ' ' || data_type, ',\n')
    || '\n);'
from my_database.information_schema.columns
group by table_name
;

请参阅这篇 Snowflake 文章以获取更多灵感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM