循环SQL节点可循环生成SQL语句,再将其分批提交给DMS管理的任意关系型数据库执行,同时,还可以搭配变量,控制SQL循环次数,达到简化SQL循环逻辑、平衡SQL语句对源库产生压力的目的。本文介绍配置循环SQL节点的操作步骤。
背景信息
任务编排的单实例SQL节点,仅可在数据库中单次执行SQL语句,不适用需要循环执行重复逻辑的场景,如:删除冗余的数据库表、SaaS用户更新大量表等场景。循环SQL节点适用于循环执行重复逻辑的场景。
例如:删除数据库表中冗余的数据。
在循环SQL节点配置页中编写简单的SQL语句,并且使用节点的循环下标${loop.index}、循环次数来控制SQL循环次数。不需要编写复杂的while、loop等循环语句就可以控制循环次数,实现循环执行删除数据库表数据的操作。
DELETE FROM test WHERE id=${loop.index};
操作步骤
- 登录数据管理DMS 5.0。
在顶部菜单栏中,选择 。
若您使用的是极简模式的控制台,请单击控制台左上角的
图标,选择 。
在任务流区域,单击目标任务流名称,进入任务流详情页。
在任务类型列表中,选择循环SQL节点并将其拖曳至画布空白区域。
双击循环SQL节点。
单击节点配置页右侧的变量设置页签,配置变量。
在循环SQL节点配置页,配置如下信息。
类别
配置项
说明
类别
配置项
说明
数据库
无
搜索并选择目标数据库。
您需要具有该数据库的查询、导出权限。申请权限的具体操作,请参见管理访问控制权限。
您可以单击界面右侧的元数据页签,查看该数据库中表的结构。
循环配置
循环类型
列表:可配置循环的列表、元素名、分隔符。具体的配置操作,请参见配置示例。
循环列表支持上游变量、任务流常量和赋值,同时支持组合使用,例如:
cat,dog,duck,${listStr}
。分隔符用于分隔循环列表,支持正则表达式,默认为半角逗号
(,)
。第一个循环列表的元素名默认为
loop.item
,第二个循环列表未配置元素名时,默认为loop.item1
,以此类推。SQL语句中可使用${loop.item1}
格式来获取当次循环对应的列表元素。循环下标的变量名为
loop.index
,SQL中可使用${loop.index}
格式来获取当前循环下标。
迭代:可配置SQL循环次数。具体的配置操作,请参见配置示例。
循环列表
配置循环列表、元素名(可自定义)等信息。
您可单击循环列表区域上方的添加,添加多个循环列表。若存在多个循环列表,必须保障多个列表项元素分割后的长度一致,否则试运行会报错。
若循环类型选择列表,则会出现此配置项。
循环次数
SQL循环次数。循环次数范围1~100。
若循环类型选择迭代,则会出现此配置项。
执行配置
批次大小
将SQL语句循环次数尽可能等分,批次大小范围1~200。系统将每批次循环生成的SQL语句一次性提交给DMS执行。
例:批次大小为2,循环次数为7,SQL循环两次为一个批次,提交给DMS执行,分别提交4次,最后一次仅有一次循环。
批次执行间隔
每批次SQL任务执行的时间间隔(单位:秒),间隔取值范围0~180秒。
例:批次时间间隔为3秒,批次大小为2,循环次数为7,共有4个批次,有3个批次执行间隔,每段间隔时间为3秒。
批次执行间隔作用于上一批次任务执行成功后。
SQL任务按照批次顺序执行,若上一批次任务执行失败,则后续批次的任务不会被执行。
在编写SQL区域,使用当前节点所选择的数据库的语法,编写SQL语句。系统将自动保存已编写的SQL语句。
SQL预览:您可以在编写SQL代码的过程中,随时单击SQL预览,预览SQL代码。
有效性检查:编写完SQL代码后,单击有效性检查,检查SQL代码的有效性。
单击试运行。
如果执行日志的最后一行出现
status SUCCEEDED
,表明任务试运行成功。如果执行日志的最后一行出现
status FAILED
,表明任务试运行失败。如果试运行失败,在执行日志中查看执行失败的节点和原因,修改配置后重新尝试。
配置示例
以下操作步骤中出现的数字均为示例值,仅供参考。
迭代
循环类型选择迭代。
循环次数填入7。
批次大小填入2。
批次执行间隔填入3。
在编写SQL区域写入SQL语句。
该SQL语句将实现删除test表中id为0、1、2、3、4、5、6的表数据,批次大小为2,该条SQL语句循环7次,分为4个批次提交给DMS执行,有3个批次执行间隔,间隔时间为3秒。
DELETE FROM test WHERE id=${loop.index};
单击试运行。
列表
循环类型选择列表。
添加循环列表,配置列表、元素名等信息。
单击界面右侧的变量设置页签,配置任务流常量和上游变量。
任务流常量配置
键名:
looplist0
键值:
task1
本示例中上游变量名为
looplist1
,值为“小白”。上游变量的配置,请参见配置时间变量。在循环列表中填入列表名
${looplist0}
、元素名key
,列表名为${looplist1}
、元素名为key1
。若未设置元素名称,则默认为系统配置的元素名称。
若该循环SQL节点有上游节点,且配置了输出变量,也可将已有的上游变量添加至循环列表。
必须保障多个列表项元素分割后,列表的长度一致,否则试运行会报错。
批次大小填入2。
批次执行间隔填入3。
在编写SQL区域写入SQL语句。
该SQL语句可实现将设置的任务流常量值与上游变量值进行连接,作为name的值,获取的
${loop.index}
下标作为id,插入test表中。INSERT INTO test(id,name) VALUE(${loop.index}, concat('${key}','${key1}'));
单击试运行。
- 本页导读 (1)
- 背景信息
- 操作步骤
- 配置示例
- 迭代
- 列表