Amazon Redshift - CSV中的COPY - 行中的单个双引号 - CSV错误的引用格式无效

时间:2015-08-06 16:52:23

标签: csv amazon-redshift

我将S3中的CSV文件加载到Redshift中。此CSV文件是包含PageUrl的分析数据(例如,查询字符串中可能包含用户搜索信息)。

它会在有单个双引号字符的行上窒息,例如,如果有一个14"玩具然后PageUrl将包含:

http://www.mywebsite.com/a-14" - 玩具/ 1234.html

Redshift可以解决这个问题,因为它期待一个关闭的双引号字符。

我认为我的选择方式是:

  1. 预处理输入并删除这些字符
  2. 在Redshift中配置COPY命令以忽略这些字符但仍加载行
  3. 将MAXERRORS设置为较高值并使用单独的过程扫描错误
  4. 选项2将是理想的,但我无法找到它!

    如果我不够努力,还有其他建议吗?

    由于

    邓肯

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。唉,两者都要求在加载之前文件采用特定的格式。

请参阅: