1

我在 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 操作需要输入文件中该标识列的值,这没有多大意义

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

有任何想法吗?

谢谢

4

2 回答 2

0

文档状况不佳。他们添加了一个“mergeKey”概念,可以是任意键(公告文档)。您不必在表上定义主键。

但是您仍然需要提供一个键来在新数据和 redshift 表中的现有数据之间执行连接。

于 2015-04-01T20:32:04.763 回答
0

在 Edit Pipeline 中的 Parameters 下,有一个名为: 的字段myPrimaryKeys (optional)。在此处输入您的 Pk,而不是将其添加到您的表定义中。

于 2017-10-31T20:00:46.433 回答