1

要将数据从 Ms sql server 2008 传输到 Snowflake,我使用了 talend ,但每次出现错误时

java.io.IOException: net.snowflake.client.loader.Loader$ConnectionError: State: CREATE_TEMP_TABLE, SQL compilation error: error line 1 at position 68
invalid identifier '"columnname"'
                at org.talend.components.snowflake.runtime.SnowflakeWriter.close(SnowflakeWriter.java:397)
                at org.talend.components.snowflake.runtime.SnowflakeWriter.close(SnowflakeWriter.java:52)
                at local_project.load_jobnotes_0_1.Load_Jobnotes.tMSSqlInput_1Process(Load_Jobnotes.java:2684)
                at local_project.load_jobnotes_0_1.Load_Jobnotes.runJobInTOS(Load_Jobnotes.java:3435)
                at local_project.load_jobnotes_0_1.Load_Jobnotes.main(Load_Jobnotes.java:2978)
Caused by: net.snowflake.client.loader.Loader$ConnectionError: State: CREATE_TEMP_TABLE, SQL compilation error: error line 1 at position 68
invalid identifier '"ID"'
                at net.snowflake.client.loader.ProcessQueue.run(ProcessQueue.java:349)
                at java.lang.Thread.run(Thread.java:748)
Caused by: net.snowflake.client.jdbc.SnowflakeSQLException: SQL compilation error: error line 1 at position 68

该列确实存在于我的雪花数据库中我仍然收到错误,因为列不存在

在分析 Talend 在雪花中执行的查询时,我发现它试图创建一个临时表来存储数据,但这样做它会从“”双引号之间的表中选择所有列,因此错误来自无效标识符“列名”

如果我在没有双引号的情况下手动执行相同的查询,它的工作正常,你能告诉我们这个问题的解决方法是什么吗

talend 在雪花中执行的查询供您参考

CREATE TEMPORARY TABLE "Tablename_20171024_115736_814_1" 
AS SELECT "column1","column2","column3"
FROM "database"."schema"."table" WHERE FALSE
4

2 回答 2

0

我发现此问题是由于 Talend 未正确应用混合大小写的数据库或模式名称。我通过更新 Snowflake 连接器角色参数发现了一个 hack,并添加了如下截图:

截屏

于 2018-06-05T08:11:20.030 回答
0

该问题很可能是由于 Snowflake 中的对象名称与通过连接器发送的内容之间的大小写不匹配造成的。在雪花端,所有对象名称都存储为大写。建议您尝试通过 COLUMN1、COLUMN2 等,看看是否可行。

您也可以尝试将QUOTED_IDENTIFIERS_IGNORE_CASE设置为true,它可能会有所帮助。

于 2018-01-19T19:08:50.067 回答