我将S3中的CSV文件加载到Redshift中。此CSV文件是包含PageUrl的分析数据(例如,查询字符串中可能包含用户搜索信息)。
它会在有单个双引号字符的行上窒息,例如,如果有一个14"玩具然后PageUrl将包含:
http://www.mywebsite.com/a-14" - 玩具/ 1234.html
Redshift可以解决这个问题,因为它期待一个关闭的双引号字符。
我认为我的选择方式是:
选项2将是理想的,但我无法找到它!
如果我不够努力,还有其他建议吗?
由于
邓肯
答案 0 :(得分:9)
2017年,我遇到了同样的问题,很高兴地报告现在有办法让红移加载带有奇怪数据的csv文件。
诀窍是使用ESCAPE关键字,也不使用CSV关键字。 我不知道为什么,但在复制命令中将CSV和ESCAPE关键字放在一起导致失败,并显示错误消息“CSV与ESCAPE不兼容;” 但是,如果没有更改加载的数据,我可以在从COPY命令中删除CSV关键字后成功加载。
您还可以参考此文档以获取帮助: http://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-escape
答案 1 :(得分:5)
不幸的是,没有办法解决这个问题。在将文件加载到Amazon Redshift之前,您需要预处理文件。
您最接近的选项是CSV [ QUOTE [AS] 'quote_character' ]
用于在另一个引号字符中包装字段,如果引号字符前面有斜杠,则为ESCAPE
。唉,两者都要求在加载之前文件采用特定的格式。
请参阅: