6

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

1,Toyota Park,Bridgeview,IL
2,Columbus Crew Stadium,Columbus,OH
3,RFK Stadium,Washington,DC
4,CommunityAmerica Ballpark,Kansas City,KS
5,Gillette Stadium,Foxborough,MA
6,New York Giants Stadium,East Rutherford,NJ
7,BMO Field,Toronto,ON
8,The Home Depot Centre,Carson,CA
9,Dick's Sporting Goods Park,Commerce City,CO
10,Pizza Hut Park,Frisco,TX

这是我正在使用的表格:

    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 - Delimiter not found ,当我使用逗号时 - 同样的事情,当我将文件转换为 utf-8 时,我得到“无效的数字,值'。',Pos 0,类型:短'。我的想法用完了。那件事到底有什么问题?有人可以给我输入文件的例子或告诉我做错了什么吗?提前谢谢。PS我还发现示例文件是在存储桶 awssampledb 中可用,但我不知道如何获取它们。

4

1 回答 1

8

基于文件示例中的数据。您需要记住,您的表中有 5 个字段,并且您的任何数据中都没有第 5 个字段 - 但它不是空字段。您的 Copy 命令需要引用您在语句开头提供的 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 示例对我来说很成功,在 'venueseats' 列中留下了默认的 1000。

于 2014-02-20T11:37:01.280 回答