我有一个包含以下内容的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的引用?
我已经尝试过谷歌搜索,但没有看到这不起作用的原因。
答案 0 :(得分:5)
没有办法强制Redshift使用反斜杠作为转义字符。
您必须将输入数据转换为Redshift可以处理的格式。一种方法是用双引号替换所有后背。例如,
"{\"assets\":[]}"
变为"{""assets"":[]}"
,然后由Redshift进行解析,最后,该字段的实际数据应该看起来像{"assets":[]}
。
来自docs:
默认引号字符是双引号(“) 引号字符用于字段内,用字符转义字符 额外的引用字符。例如,如果引号字符是a 双引号,插入字符串
A "quoted" word
的输入 文件应包含字符串"A ""quoted"" word"