微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Snowflake COPY INTO 从阶段丢失行

如何解决Snowflake COPY INTO 从阶段丢失行

我一直在使用 PUT 命令将 CSV 数据推送到雪花中以暂存文件,然后使用 copY INTO 将内容放入目标表中:

sNowsql -c myConnection -q 'PUT file://C:\\MyData.csv @~/MyStagingArea;'

sNowsql -c myConnection -q 'USE WAREHOUSE MY_WH; copY INTO MY_TABLE FROM @~/MyStagingArea/MyData.csv.gz FILE_FORMAT = (type=csv validate_utf8=false null_if=('''') field_optionally_enclosed_by=''""'');'

在大多数情况下,这很好用。然而,对于非常大的文件,我将它们分成 9,000,000 个块并使用 powershell 脚本加载它们。最终,我注意到对于这些较大的文件,行会被遗漏。

通过每个文件上传,我发现了问题。沿线的某个地方,在某些情况下,行会丢失,但命令没有记录任何错误

+----------------------------------+
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.175s
+----------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| file                         | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name |
|----------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
| DMyStagingArea/MyData.csv.gz | LOADED |     8999997 |     8999997 |           1 |           0 | NULL        |             NULL |                  NULL | NULL                    |
+----------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
1 Row(s) produced. Time Elapsed: 31.520s

这只有三行短,但这个特殊的负载超过 30 个文件,到最后,它没有错误删除了大约 4000 万行。我的 sNowsql 日志文件中也没有错误

鉴于没有错误消息和数据的大小,我不知道从哪里开始寻找问题。有没有人了解可能导致此过程删除行而不会出错的原因?

解决方法

一种合理的解释是 CSV 包含多行条目(即在 " 内引用的带有换行符/回车符的条目)。

示例:

col1,col2
1,"This
entry has two lines"

因此,直接比较行与加载的行可能会产生不同的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。