S3 转 Redshift 输入数据格式
Posted
技术标签:
【中文标题】S3 转 Redshift 输入数据格式【英文标题】:S3 to Redshift input data format 【发布时间】:2014-02-19 19:58:15 【问题描述】:我正在尝试运行一个简单的链 s3-pipeline-redshift,但我完全被输入数据格式所困扰。这是我的文件:
1,丰田公园,布里奇维尤,IL 2,哥伦布船员体育场,哥伦布,俄亥俄州 3,RFK 体育场,华盛顿特区 4,CommunityAmerica Ballpark,堪萨斯城,KS 5,吉列体育场,福克斯伯勒,MA 6,纽约巨人体育场,东卢瑟福,新泽西 7,BMO 球场,多伦多,ON 8,家得宝中心,卡森,CA 9,迪克体育用品公园,商业城,CO 10,必胜客公园,弗里斯科,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,类型:短的'。 我没有主意了。那东西到底有什么问题?有人可以给我输入文件的例子或告诉我做错了什么吗?提前致谢。 附:我还发现存储桶 awssampledb 中提供了示例文件,但我不知道如何获取它们。
【问题讨论】:
【参考方案1】:基于文件示例中的数据。您需要记住,您的表中有 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 examples 为我成功工作,在“venueseats”列中留下了默认的 1000。
【讨论】:
非常感谢,你拯救了我的一天。我明确定义了最后一个参数,它开始工作。但是对于您提供的解决方案,我怎样才能在管道中做同样的事情?以上是关于S3 转 Redshift 输入数据格式的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spectrify 以 Parquet 格式将数据从 Redshift 卸载到 S3
我可以使用AWS Glue将S3上的json数据转换为柱状格式并将其推送到Redshift吗?
Redshift Spectrum 读取文件的数据格式是啥?