普元数据开发平台 普元数据开发平台
产品介绍
安装部署
快速入门
操作指南
应用集成
运维指南
  • 执行SQL脚本组件使用说明
  • 组件说明
  • 适用场景
  • 配置项说明

# 执行SQL脚本组件使用说明

  • 组件说明
  • 配置项说明
  • 使用示例
    • 使用绑定参数的方式对表数据进行更改

# 组件说明

执行SQL脚本用于在转换的开始阶段或者对传入该步骤的每一行数据执行 SQL 脚本,执行一条或多条 SQL 语句。

可以执行任意 DDL/DML:create/drop/truncate/insert/update/delete/call存储过程。

有两种执行模式:整段只执行 1 次 / 上游每一行数据执行 1 次。

有两套传参体系:

  • ${变量名}:全局 / 转换 / 作业变量
  • ?占位符:上游数据流字段逐行传参(防 SQL 注入)

例如:delete from t where dt='${system.biz.curdate}' and id=?

# 适用场景

  • 前置清理:truncate 目标表、建分区、删索引
  • 复杂单条更新、批量条件修改、存储过程调用
  • 按上游每条记录动态执行 SQL(逐行更新)
  • 数仓初始化、后置统计 SQL 执行

# 配置项说明

配置名称 数据类型 是否必须 默认值 描述
节点名称 String 是 - 当前创建的节点名称,由用户自定义且不可为空。命名可包含字母、数字、下划线。
选择数据源 String 是 - 选择目标数据库连接。
SQL编辑 String 是 - SQL 编辑区,多条语句用 ; 分隔。
执行每一行 Boolean 是 false - 不勾选:组件只执行 1 次 SQL,忽略上游所有数据流,适合 truncate、建表等一次性操作,在启动时就开始执行SQL,而不是等待上一个组件运行完才会执行;
- 勾选:上游每一条记录,完整执行一遍 SQL,SQL 脚本会针对输入数据流中的每一行执行一次,每行数据都会替换 SQL 脚本中的相应变量。
注意:SQL 内必须使用?占位符接收上游字段参数,下方「作为参数的字段」列表必须配置字段映射。
作为单个语句执行 Boolean 是 false - 不勾选:按;拆分多条 SQL 依次执行,一条失败整体报错;
- 勾选:把整个文本当作一条完整 SQL,不会按分号切割;适合存储过程、带函数体内分号的复杂脚本。
变量替换 Boolean 是 false - 不勾选:${xxx}原样传到数据库,直接语法报错;
- 勾选:识别 SQL 中${变量名},自动替换 Kettle 变量(转换命名参数、作业变量、环境变量)。
注意:无论是否「执行每一行」,只要用到${}就必须勾选此项。
绑定参数 Boolean 是 false 必须勾选「执行每一行」后才能启用。
- 勾选:可以使用输入流中字段作为参数,使用 ? 作为参数标识,参数字段值需要和 ? 位置对应。
引用字符串 Boolean 是 false 必须勾选「执行每一行」,且不能和「绑定参数」同时勾选,二选一。
- 勾选:自动给字符串参数包裹数据库引号,自动转义内容里的单引号(如值O'Neil自动转成'O''Neil')。
作为参数字段 String 是 - 仅勾选「执行每一行」后生效。
勾选「绑定参数」,一键获取上一步所有输出字段,自动填充列表。
列表从上到下顺序 = SQL 中?从左到右顺序一一对应;
SQL 有 3 个?,列表必须 3 个字段,少 / 多都会报错;
若同一个字段想多次使用,需上游连接「选择字段」组件复制多份同名字段。
包含插入状态字段 String 是 - insert 行数输出字段名。
包含更新状态字段 String 是 - update 行数输出字段名。
包含删除状态字段 String 是 - delete 行数输出字段名。
包含读状态字段 String 是 - select 查询行数(仅统计,不返回查询结果)。

← JavaScript 写日志 →