S3到Redshift输入数据格式

时间:2014-02-19 19:58:16

标签: amazon-web-services amazon-redshift amazon-data-pipeline

我正在尝试运行一个简单的链式s3-pipeline-redshift,但我已经完全陷入了输入数据格式。这是我的文件:

1,丰田公园,Bridgeview,IL
2,Columbus Crew Stadium,Columbus,OH
3,RFK体育场,华盛顿特区 4,社区美国棒球场,堪萨斯城,堪萨斯州 5,吉列体育场,马萨诸塞州福克斯堡 6,纽约巨人体育场,新泽西州东卢瑟福 7,BMO Field,Toronto,ON
8,Home Depot Center,Carson,CA
9,迪克的体育用品公园,商业城,CO 10,必胜客公园,弗里斯科,德克萨斯州

这是我正在使用的表格:

    create table venue_new(
    venueid smallint not null,
    venuename varchar(100) not null,
    venuecity varchar(30),
    venuestate char(2),
    venueseats integer not null default '1000');

当我使用|作为分隔符,我收到错误1214 - 未找到分隔符,当我使用逗号时 - 同样的事情,当我将文件转换为utf-8时,我得到“无效的数字,值'。',Pos 0,类型:短'。 我没有想法了。这个东西到底有什么问题?有人可以给我输入文件的例子或告诉我我做错了什么?提前致谢。 附:我还发现样本文件在存储桶awssampledb中可用,但我不知道如何获取它们。

1 个答案:

答案 0 :(得分:8)

基于文件示例中的数据。您需要记住,表中有5个字段,并且您的任何数据中都没有第5个字段 - 但它是非空字段。您的复制命令需要引用您在语句开头提供的4列。

copy venue_new(venueid, venuename, venuecity, venuestate) 
from 's3://mybucket/data/venue_noseats.txt' 
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>'
delimiter ',';

我发现上述命令(来自AWS Docs COPY examples成功地为我工作,让我在'venueseats'列中保留默认值1000。