带双引号的CSV的报价格式无效(Redshift加载)

时间:2015-08-11 02:31:14

标签: csv amazon-redshift

我有一个包含以下内容的CSV:

id,homie_id,user_id,some_data,some_datetime,list_stuff,confirmed_at,report_id
     1,57,1,,,"{\"assets\":[]}","2014-12-26 16:50:32",18
     2,59,1,,,"{\"assets\":[]}","2014-12-26 16:50:46",18

当我运行COPY命令时,出现错误“CSV的报价格式无效”

为什么?它在引用前有反斜杠,因此应该可以接受。我看到Redshift说使用“”代替(https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-format.html#copy-data-format-parameters),但有没有办法告诉它接受\“因为这是一种有效的方式来逃避CSV的引用?

我已经尝试过谷歌搜索,但没有看到这不起作用的原因。

1 个答案:

答案 0 :(得分:5)

没有办法强制Redshift使用反斜杠作为转义字符。 您必须将输入数据转换为Redshift可以处理的格式。一种方法是用双引号替换所有后背。例如, "{\"assets\":[]}"变为"{""assets"":[]}",然后由Redshift进行解析,最后,该字段的实际数据应该看起来像{"assets":[]}

来自docs

  

默认引号字符是双引号(“)   引号字符用于字段内,用字符转义字符   额外的引用字符。例如,如果引号字符是a   双引号,插入字符串A "quoted" word的输入   文件应包含字符串"A ""quoted"" word"