使用亚马逊管道的红移副本因缺少主键而失败

时间:2015-02-19 00:28:12

标签: amazon-redshift amazon-data-pipeline

我在S3上有一组文件正在尝试加载到redshift中。 我正在使用亚马逊数据管道来做到这一点。该向导获取了集群,数据库和文件格式信息,但我得到的错误是需要一个主键来保持表中的现有字段(KEEP_EXISTING

我的表架构是:

create table public.Bens_Analytics_IP_To_FileName(  
Day date not null encode delta32k,  
IP varchar(30) not null encode text255,  
FileName varchar(300) not null encode text32k,  
Count integer not null)  
distkey(Day)  
sortkey(Day,IP);  

然后我在表上添加了一个复合主键,看它是否有效,但是我得到了同样的错误。

create table public.Bens_Analytics_IP_To_FileName(  
Day date not null encode delta32k,  
IP varchar(30) not null encode text255,  
FileName varchar(300) not null encode text32k,  
Count integer not null,  
primary key(Day,IP,FileName))  
distkey(Day)  
sortkey(Day,IP);  

所以我决定添加一个标识列作为最后一列并使其成为主键但是COPY操作需要输入文件中该标识列的值,这没有多大意义

理想情况下,我希望它在没有主键或复合主键的情况下工作

任何想法?

由于

2 个答案:

答案 0 :(得分:0)

文档状况不佳。他们添加了一个'mergeKey'概念,可以是任意键(announcementdocs)。您不必使用此方法在表上定义主键。

但是你仍然需要提供一个密钥才能在你的新数据和redshift表中的现有数据之间进行连接。

答案 1 :(得分:0)

在“编辑管道”中的“参数”下,有一个名为myPrimaryKeys (optional)的字段。在那里输入Pk,而不是将其添加到表定义中。