【问题标题】:Amazon Redshift - COPY from CSV - single Double Quote in row - Invalid quote formatting for CSV ErrorAmazon Redshift - 从 CSV 复制 - 行中的单个双引号 - CSV 错误的无效报价格式
【发布时间】:2015-10-29 22:35:45
【问题描述】:

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

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

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

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

我认为我的选择是:

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

选项 2 会很理想,但我找不到!

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

谢谢

邓肯

【问题讨论】:

  • 我知道这是一年前的事了,但是有什么更新可以找到#2 的答案吗?

标签: amazon-web-services csv amazon-redshift


【解决方案1】:

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

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

见:

【讨论】:

  • 谢谢约翰。是的,我已经辞职写了一个小 PIG 工作,在所有“with \”之前,这应该可以解决问题。
  • 根据数据的大小,您可以通过sed 运行。您甚至可以通过aws s3 cp s3://b/f - | sed xxx | aws s3 cp - s3://b/f2 将其作为流媒体作业来完成。查看docs.aws.amazon.com/cli/latest/reference/s3/cp.html上的流媒体
  • @ayeletd 下面的回答提供了一个无需预处理的解决方案
【解决方案2】:

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

诀窍是使用 ESCAPE 关键字,并且不要使用 CSV 关键字。 我不知道为什么,但是在复制命令中同时使用 CSV 和 ESCAPE 关键字会导致失败并显示错误消息“CSV 与 ESCAPE 不兼容;” 但是,一旦我从 COPY 命令中删除了 CSV 关键字,我就能够成功加载加载的数据。

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

【讨论】:

  • 非常感谢您的回复,这在 2 年后拯救了我的一天!
  • FORMAT AS CSV 只能处理文件中的换行符 - 我们该如何处理?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2016-03-25
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多