我正在尝试运行一个简单的链式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中可用,但我不知道如何获取它们。
答案 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。