Redshift 在文本字段中使用逗号加载 CSV
Posted
技术标签:
【中文标题】Redshift 在文本字段中使用逗号加载 CSV【英文标题】:Redshift loading CSV with commas in a text field 【发布时间】:2017-11-14 16:00:35 【问题描述】:我一直在尝试加载包含以下行的 csv 文件:
91451960_NE,-1,171717198,50075943,"MARTIN LUTHER KING, JR WAY",1,NE
注意名称中的逗号。我已经尝试了 REMOVEQUOTES、DELIMITER ',' 等的所有排列方式......但它们都不起作用。
我还有其他行在名称中间带引号,因此 ESCAPE 选项也必须在那里。
根据其他帖子,
DELIMITER ',' ESCAPE REMOVEQUOTES IGNOREHEADER 1;
应该工作,但没有。 Redshift 给出“未找到分隔符”错误。
ESCAPE 是否会导致问题,我是否必须转义逗号?
【问题讨论】:
能否请您编辑您的问题并提供一些示例输入行、您使用的 COPY 命令以及您收到的错误消息?这样,我们可以尝试重现这种情况。 【参考方案1】:我尝试使用 CSV 作为数据格式参数加载您的数据,这对我有用。请记住,CSV 不能与 FIXEDWIDTH、REMOVEQUOTES 或 ESCAPE 一起使用。
create TEMP table awscptest (a varchar(40),b int,c bigint,d bigint,e varchar(40),f int,g varchar(10));
copy awscptest from 's3://sds-dev-db-replica/test.txt'
iam_role 'arn:aws:iam::<accounID>:<IAM_role>'
delimiter as ',' EMPTYASNULL CSV NULL AS '\0';
参考:http://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-format.html http://docs.aws.amazon.com/redshift/latest/dg/tutorial-loading-run-copy.html http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html#load-from-csv
【讨论】:
以上是关于Redshift 在文本字段中使用逗号加载 CSV的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Copy commd 中使用反斜杠字符将 s3 csv gz 文件加载到 Redshift
AWS Redshift:如何存储大小大于 100K 的文本字段
更改 CSV 文本中的数字区域设置格式(在数字中用逗号交换点)