当 csv 文件在字符串中有逗号时,Snowflake 数据库中的复制命令失败

Posted

技术标签:

【中文标题】当 csv 文件在字符串中有逗号时,Snowflake 数据库中的复制命令失败【英文标题】:Copy command in Snowflake database fails when csv file has comma in a string 【发布时间】:2020-01-26 12:27:19 【问题描述】:

我正在将雪花中的舞台表中的 csv 文件复制到普通雪花表中。

csv 中的某些行在字符串中有逗号,因此复制命令失败。

COPY INTO TEST_DB.TEST_SCHEMA.USER FROM @user_test/users.csv.gz 
file_format=(TYPE=csv field_delimiter=',' skip_header=0 ) on_error = 'abort_statement'

我收到以下错误

SQL Error [100016] [22000]: Field delimiter ',' found while expecting record delimiter '\n'
  File 'users.csv.gz', line 32, character 54

我也尝试使用 FIELD_OPTIONALLY_ENCLOSED_BY 这给了我另一个错误

COPY INTO TEST_DB.TEST_SCHEMA.USER FROM @user_test/users.csv.gz 
file_format=(TYPE=csv field_delimiter=',' skip_header=0 FIELD_OPTIONALLY_ENCLOSED_BY = '"') 
on_error = 'abort_statement'

我收到以下错误

SQL Error [100066] [22000]: Found character '\r' instead of record delimiter '\n'
  File 'users.csv.gz', line 32, character 78

csv 中失败的行如下所示

100,True,0,2010-10-07 12:19:42,,400,8,467,"Authority, Mail Service"

我注意到只有带逗号的字符串有双引号。

这可能是它仍然因 FIELD_OPTIONALLY_ENCLOSED_BY 失败的原因吗?

【问题讨论】:

【参考方案1】:

终于找到了解决办法。

我用 python 创建的 csv 文件在每一行之间都有行空间。

去掉 csv 中的行空间后,FIELD_OPTIONALLY_ENCLOSED_BY ='"' 工作并加载了数据。

【讨论】:

以上是关于当 csv 文件在字符串中有逗号时,Snowflake 数据库中的复制命令失败的主要内容,如果未能解决你的问题,请参考以下文章

php解析csv时,特定汉字会导致逗号识别不出来

C#导入csv文件,数据中有逗号怎么处理

hive导入csv文件,字段中双引号内有逗号

如何使用 Java 中的 PrintWriter 将逗号打印到 .csv 文件?

excel另存为csv打开后有大量逗号是怎么回事?

Pyspark:读取带有双引号和逗号的字段的csv文件