我们可以使用 ADF Lookup activity 对 SNOWFLAKE table 执行 INSERT 操作吗
Can we use ADF Lookup activity perform INSERT operation on SNOWFLAKE table
我使用雪花连接器创建了新数据集,并在查找中使用了与源数据集相同的数据集 activity。
然后我尝试使用以下查询将记录插入到雪花中。
'INSERT INTO SAMPLE_TABLE VALUES('TEST',1,1,CURRENT_TIMESTAMP,'TEST'--(所有值都传递)
结果:该行被插入到雪花中,但我的管道失败并显示以下错误。
'Source' 端发生故障。 ErrorCode=UserErrorOdbcInvalidQueryString,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=以下 ODBC 查询无效:'INSERT INTO SAMPLE_TABLE VALUES('TEST',1,1,CURRENT_TIMESTAMP,'TEST');'
能否请您分享您的建议或解决此问题的任何线索。
谢谢。
拉杰什
Lookup,顾名思义,就是查找和检索数据,而不是插入。但是,您可以将 INSERT 代码包含在一个过程中并使用 Lookup activity.
执行它
但是,我强烈不推荐这样的操作,请记住,在向 Snowflake 中插入数据时,您至少要创建一个 micro-partition,大小为 16MB,如果一次插入一行,性能会很糟糕,数据会占用不成比例的space。请记住 Snowlfake 不是事务数据库 (!OLTP)。
相反,最好将所有记录保存在一个中间文件中,然后一次导入整个文件。
您 可以 使用查找 activity 来执行 select 以外的操作,它只需要有一个输出。我已经通过一个 postgres 数据库解决了这个问题,只需连接一个
就可以创建表、截断、一次性插入
select current_date;
在主查询之后。
请注意,sql 脚本 activity 肯定会更好,不过我们正在等待 postgres 的支持。
我使用雪花连接器创建了新数据集,并在查找中使用了与源数据集相同的数据集 activity。
然后我尝试使用以下查询将记录插入到雪花中。 'INSERT INTO SAMPLE_TABLE VALUES('TEST',1,1,CURRENT_TIMESTAMP,'TEST'--(所有值都传递)
结果:该行被插入到雪花中,但我的管道失败并显示以下错误。
'Source' 端发生故障。 ErrorCode=UserErrorOdbcInvalidQueryString,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=以下 ODBC 查询无效:'INSERT INTO SAMPLE_TABLE VALUES('TEST',1,1,CURRENT_TIMESTAMP,'TEST');'
能否请您分享您的建议或解决此问题的任何线索。
谢谢。 拉杰什
Lookup,顾名思义,就是查找和检索数据,而不是插入。但是,您可以将 INSERT 代码包含在一个过程中并使用 Lookup activity.
执行它但是,我强烈不推荐这样的操作,请记住,在向 Snowflake 中插入数据时,您至少要创建一个 micro-partition,大小为 16MB,如果一次插入一行,性能会很糟糕,数据会占用不成比例的space。请记住 Snowlfake 不是事务数据库 (!OLTP)。
相反,最好将所有记录保存在一个中间文件中,然后一次导入整个文件。
您 可以 使用查找 activity 来执行 select 以外的操作,它只需要有一个输出。我已经通过一个 postgres 数据库解决了这个问题,只需连接一个
就可以创建表、截断、一次性插入select current_date;
在主查询之后。
请注意,sql 脚本 activity 肯定会更好,不过我们正在等待 postgres 的支持。