【发布时间】:2021-10-26 22:19:24
【问题描述】:
我不明白为什么 Snowflake 没有按照应有的方式复制我的数据,所以我决定来这里问你。
这是我的过程的解释。我正在使用 Talend 进行数据转换,以从一些文件/数据库中提取数据并最终将其导入 Snowflake。这是我的 Talend 工作的概述。
我的 Talend 工作运行良好,不会引发任何错误。它应该将大约 9.6k 行导入到名为 Events 的 Snowflake 表中。不幸的是,这并没有发生。这是“历史记录”窗格中雪花端发生的确切过程的副本/过去。
1. SHOW GRANTS TO USER identifier("AMBA");
2. SELECT * FROM EVENTS;
3. SELECT CURRENT_DATABASE(), CURRENT_SCHEMA()
4. alter session /* JDBC:SnowflakeConnectionV1.setAutoCommit*/ set autocommit=false
5. show /* JDBC:DatabaseMetaData.getPrimaryKeys()
6. show /* JDBC:DatabaseMetaData.getColumns()
7. PUT 'file://C:\\Users\\amba\\AppData\\Local\\Temp\\snowflake\\stage\\EVENTS\\INSERT\\20210826_185008_230_NLF1NE_1\\stream_20210826_185008_2300.gz' '@~/EVENTS/INSERT/20210826_185008_230_NLF1NE_1' parallel=10 overwrite=true auto_compress=false SOURCE_COMPRESSION=gzip
8. show columns in "EVENTS"
9. CREATE TEMPORARY TABLE "EVENTS_20210826_185008_230_1" LIKE "EVENTS"
10. COPY INTO "EVENTS_20210826_185008_230_1" FROM '@~/EVENTS/INSERT/20210826_185008_230_NLF1NE_1' on_error='CONTINUE' file_format=( field_optionally_enclosed_by='"' empty_field_as_null=true)
11. COPY INTO "EVENTS_20210826_185008_230_1" FROM '@~/EVENTS/INSERT/20210826_185008_230_NLF1NE_1' validation_mode='return_all_errors' file_format=(field_optionally_enclosed_by='"'empty_field_as_null=true) -- HERE I CAN SEE MY 9.6K ROWS
12. INSERT INTO "EVENTS"("ID","ODB_CREATED_AT","EVENT_TIME","DEVICE_TYPE","EVENT_TYPE","TICKET_TYPE","CARD_NR","COUNT","MANUFACTURER","CARPARK_ID") SELECT * FROM "EVENTS_20210826_185008_230_1"
13. RM '@~/EVENTS/INSERT/20210826_185008_230_NLF1NE_1'
14. commit
15. commit
这是历史的截图:
1) Load error, all 1 files were rejected: COPY INTO "EVENTS_20210826_185008_230_1" FROM '@~/EVENTS/INSERT/20210826_185008_230_NLF1NE_1' on_error='CONTINUE' file_format=( field_optionally_enclosed_by='"' empty_field_as_null=true)
2) Succeeded: The copy into: COPY INTO "EVENTS_20210826_185008_230_1" FROM '@~/EVENTS/INSERT/20210826_185008_230_NLF1NE_1' validation_mode='return_all_errors' file_format=(field_optionally_enclosed_by='"'empty_field_as_null=true)
3) Succeeded: The insert statement: INSERT INTO "EVENTS"("ID","ODB_CREATED_AT","EVENT_TIME","DEVICE_TYPE","EVENT_TYPE","TICKET_TYPE","CARD_NR","COUNT","MANUFACTURER","CARPARK_ID") SELECT * FROM "EVENTS_20210826_185008_230_1"
我尝试将数据导入到 postgres 数据库和简单的 csv 文件,工作正常,所以错误不能来自 Talend,一定是 Snowflake 有问题。
雪花所做的只是:
- 连接到数据库
- 将从 talend 生成的插入文件放入服务器
- 将数据复制到临时表中
- 将临时表中的数据复制到我的事件表中
- 删除临时表
- 提交
我在这里错过了什么?
谢谢
【问题讨论】:
-
请您提供完整的 INSERT INTO EVENTS 声明。不删除临时表(在测试时)可能是值得的,这样您就可以查看它是否被正确填充
-
嗨@NickW,我刚刚编辑了我的帖子并在第二个屏幕截图之后添加了语句。正如我所看到的,它首先抛出一个错误,然后将我的 9.6k 行复制到临时表中。不幸的是,我无法阻止雪花删除临时表,因为它是一个自动过程......我从日志中可以看到临时事件表确实被填满了
标签: snowflake-cloud-data-platform talend snowflake-schema