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

Posted

技术标签:

【中文标题】带双引号的 CSV 的无效引号格式(Redshift 加载)【英文标题】:Invalid quote formatting for CSV with double quotes (Redshift loading) 【发布时间】:2015-08-11 02:31:14 【问题描述】:

我有一个包含以下内容的 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】:

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

来自docs:

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

【讨论】:

以上是关于带双引号的 CSV 的无效引号格式(Redshift 加载)的主要内容,如果未能解决你的问题,请参考以下文章

从熊猫数据框保存不带双引号的csv文件

将 MySQL 导出为 CSV,一些列带引号,一些不带引号

MYSQL导入文件带双引号问题

CSV文件格式介绍

导入导出, Excel,CSV格式数据复制的各种特殊情况

mysql导出的SQL怎么都带双引号