当 csv 文件在字符串中包含逗号时,Snowflake 数据库中的复制命令失败
Copy command in Snowflake database fails when csv file has comma in a string
我正在将雪花阶段 table 中的 csv 文件复制到普通雪花 table。
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 而失败的原因吗?
终于找到解决办法了。
我用 python 创建的 csv 文件每行之间都有行距。
去掉 csv 中的行距后,FIELD_OPTIONALLY_ENCLOSED_BY ='"' 工作并加载了数据。
我正在将雪花阶段 table 中的 csv 文件复制到普通雪花 table。
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 而失败的原因吗?
终于找到解决办法了。
我用 python 创建的 csv 文件每行之间都有行距。
去掉 csv 中的行距后,FIELD_OPTIONALLY_ENCLOSED_BY ='"' 工作并加载了数据。