ADF/Synapse复制活动预复制脚本:按配置表动态截断表
正确的预复制脚本表达式方案
根据你的需求,以下是两种适配不同isTrun列类型的正确语法:
当isTrun为布尔类型(存储值为True/False)
@{if(equals(item().isTrun, true()), concat('TRUNCATE TABLE [', item().targetSchema, '].[', item().targetTable, ']'), 'SELECT 1')}
当isTrun为数值类型(存储值为1/0)
@{if(equals(item().isTrun, 1), concat('TRUNCATE TABLE [', item().targetSchema, '].[', item().targetTable, ']'), 'SELECT 1')}
原脚本的问题说明:
- 第一个脚本错误:ADF表达式判断必须使用内置
equals()函数,而非=;else部分的'1=1'并非合法独立SQL,部分数据库会执行报错,改用SELECT 1作为无操作合法语句 - 第二个脚本错误:错误调用
item().targetSchema.item(),正确写法为item().targetSchema;targetTable缺少item()前缀导致无法读取循环变量;条件不满足时返回空字符串,会生成TRUNCATE TABLE这种语法完全错误的SQL
内容的提问来源于stack exchange,提问作者Ruben van Oranje
相关产品推荐
相关产品推荐

