Amazon Redshift - 从 CSV 复制 - 行中的单个双引号 - CSV 错误的无效引号格式

Amazon Redshift - COPY from CSV - single Double Quote in row - Invalid quote formatting for CSV Error

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

它会在有单个双引号字符的行上阻塞,例如,如果有一个 14" 玩具的页面,那么 PageUrl 将包含:

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

可以理解,Redshift 无法处理此问题,因为它需要一个结束双引号字符。

我认为我的选择是:

  1. 预处理输入并删除这些字符
  2. 在 Redshift 中配置 COPY 命令以忽略这些字符但仍加载行
  3. 将 MAXERRORS 设置为较高的值并使用单独的进程清除错误

选项 2 比较理想,但我找不到!

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

谢谢

邓肯

不幸的是,没有办法解决这个问题。在将文件加载到 Amazon Redshift 之前,您需要 预处理 文件。

您拥有的最接近的选项是 CSV [ QUOTE [AS] 'quote_character' ] 将字段包装在替代引号字符中,以及 ESCAPE 如果引号字符前面有斜杠。 las,两者都要求文件在加载前为特定格式。

参见:

现在是 2017 年,我 运行 遇到了同样的问题,很高兴地报告现在有一种方法可以让 redshift 加载数据中带有奇数 " 的 csv 文件。

诀窍是使用 ESCAPE 关键字,同时不要使用 CSV 关键字。 我不知道为什么,但在复制命令中同时使用 CSV 和 ESCAPE 关键字会导致失败并显示错误消息 "CSV is not compatible with ESCAPE;" 但是,在没有更改加载数据的情况下,一旦我从 COPY 命令中删除 CSV 关键字,我就能够成功加载。

您也可以参考此文档寻求帮助: http://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-escape