当 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 数据库中的复制命令失败的主要内容,如果未能解决你的问题,请参考以下文章