像在Redshift中定义主键一样创建表

问题描述 投票:0回答:3

我试图通过另外指定表的主键在redshift中使用CTAS子句复制表。

尝试下面的语法,但没有运气。但是,我能够使用相同的语法指定DISTKEY / SORTKEY

create table date_dim
PRIMARY KEY(date_key)
--DISTKEY ( date_key )
as
   select date_key,
   calendar_date,.....;

我想使用主键作为我在流程中设计的合并逻辑的一部分。

TIA!

primary-key amazon-redshift
3个回答
3
投票

很多人认为Redshift中的主键和外键是反模式的(因为它们没有被强制执行),但我的团队构建了一个支持这种情况的小工具(Python脚本)。

您在正常的SQL文件中编写select语句,在YAML配置文件中定义主键,外键,distkey等,然后使用该脚本生成(并可选地执行)SQL以创建和填充表。

我们还包括一个Airflow运算符,使其易于安排和自动化。

回购是here,我们写了更多关于它on our team blog


0
投票

0
投票

您只能在CTAS中指定distkey和sortkey。以下链接描述了您可以指定Redshift CTAS的所有选项

© www.soinside.com 2019 - 2024. All rights reserved.