ADF管道执行Snowflake UPDATE SQL时出现查询执行失败错误
问题原因及修复方案
核心问题是你拼接SQL时,字符串类型的RawHeader变量没被单引号包裹,导致Snowflake解析SQL出现语法错误:
用固定数字值(如12345)时,拼接后的SQL是:
update schema.loadcontrol set fileheader = 12345 where loadnumber = [LoadNumber的值]数字不需要单引号,语法合法,所以能正常执行。
用25字符的字符串变量时,拼接后的SQL会变成:
update schema.loadcontrol set fileheader = 你的RawHeader字符串内容 where loadnumber = [LoadNumber的值]这里的字符串没有单引号,Snowflake会把它当成列名或其他标识符,找不到对应对象就触发了执行错误。
修复方法
修改拼接逻辑,给RawHeader变量加上单引号(ADF里用两个单引号表示转义的单个单引号):
@concat('update schema.loadcontrol set fileheader = ''',string(variables('RawHeader')),''' where loadnumber = ',variables('LoadNumber'))
如果RawHeader本身可能包含单引号(比如字符串里有'),为避免SQL注入或语法错误,推荐用Snowflake的QUOTE函数更安全:
@concat('update schema.loadcontrol set fileheader = QUOTE(',string(variables('RawHeader')),') where loadnumber = ',variables('LoadNumber'))
内容的提问来源于stack exchange,提问作者MikeLanglois
相关产品推荐
相关产品推荐

