我正试图将数据库表移动到amazon红移,但为了做到这一点,我必须在红移中重新创建空表。
请参见此处。
我需要的是一种以某种方式同时重现它们的方法。不像上面链接中那样一个接一个地完成,因为有很多表。
原始数据库位于亚马逊雪花中。我需要一个简单的解决方案,而不是一个完全自动化的服务,因为这是一次需要做的事情
在Snowflake上,您可以执行:
SELECT get_ddl('database','{name of database}');
这将获得Snowflake中的整个架构、表、视图等CREATE或REPLACE语句。您可能需要对数据类型或Snowflake和RedShift之间可能不同的其他事情进行一些查找/替换,但这是最简单的方法。
INFORMATION_SCHEMA提供了有关表的详细信息——名称、列、数据类型、键、注释。您可以使用"dynamicsql"将它们拼接到一个createtable语句中。这里有一个例子:
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文章以获得更多灵感。