我在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操作需要输入文件中该标识列的值,这没有多大意义
理想情况下,我希望它在没有主键或复合主键的情况下工作
任何想法?
由于
答案 0 :(得分:0)
文档状况不佳。他们添加了一个'mergeKey'概念,可以是任意键(announcement,docs)。您不必使用此方法在表上定义主键。
但是你仍然需要提供一个密钥才能在你的新数据和redshift表中的现有数据之间进行连接。
答案 1 :(得分:0)
在“编辑管道”中的“参数”下,有一个名为myPrimaryKeys (optional)
的字段。在那里输入Pk,而不是将其添加到表定义中。