# SQL程序
# 说明
SQL 程序用于直接连接各类数据库执行 SQL 语句 / 脚本,无需编写 Shell/Java 代码,支持批处理执行、结果集输出、失败重试等特性:
- 支持数据源:MySQL、PostgreSQL、Hive、ClickHouse、Doris、Oracle、SQL Server 等主流数据库;
- 执行模式:单条 SQL、多条 SQL(分号分隔)、SQL 文件(资源中心);
- 核心能力:支持参数化 SQL、执行结果展示、超时控制、事务管理(部分数据库)。
支持查询和非查询两种:
- 查询:支持 DML select 类型的语句,是有结果集返回的;
- 非查询:支持 DDL 全部语句 和 DML update、delete、insert 三种类型的语句;
- 分段执行符号:提供在数据源不支持一次执行多段SQL语句时,拆分SQL语句的符号来进行多次调用数据源执行方法。
例如:
1.当数据源选择 Hive 数据源时,不需要填写此参数。因为 Hive 数据源本身支持一次执行多段 SQL 语句;
2.当数据源选择 MySQL 数据源时,并且要执行多段 SQL 语句时,需要填写此参数为英文分号 ;。因为MySQL数据源不支持一次执行多段 SQL 语句。
- 分段执行符号:提供在数据源不支持一次执行多段SQL语句时,拆分SQL语句的符号来进行多次调用数据源执行方法。
# 配置项说明
| 配置项 | 默认值 | 描述 |
|---|---|---|
| 数据源 | - | 选择SQL语句所执行的对应的数据源。 |
| SQL类型 | 查询 | 支持查询和非查询两种。 查询:支持 DML select 类型的命令,有结果集返回。 非查询:支持 DDL全部命令 和 DML update、delete、insert 三种类型的命令。 |
| 分段执行符号 | - | 数据源不支持一次执行多段 SQL 语句时,用拆分 SQL 语句的符号来进行多次调用数据源执行方法。 |
| 日志行数 | 10 | 执行 SQL 语句返回的结果行数。 |
| SQL语句 | - | 用户编写 SQL 语句。 |
SQL 内容配置(核心)
直接填写 SQL 语句,支持单条 / 多条(分号分隔),示例:
-- 单条 SQL
INSERT OVERWRITE TABLE ods.user_info PARTITION (dt = '${sys.date}')
SELECT id, name, age FROM raw.user_info WHERE dt = '${sys.date}';
-- 多条 SQL(分号分隔)
USE ods;
ALTER TABLE user_info DROP IF EXISTS PARTITION (dt = '${sys.date}');
INSERT INTO TABLE user_info PARTITION (dt = '${sys.date}')
SELECT id, name, age FROM raw.user_info WHERE dt = '${sys.date}';
# FAQ
常见问题与排查
- 数据源连接失败
原因:网络不通、账号密码错误、数据库服务未启动;
解决:测试数据源连接,检查防火墙 / 端口,确认数据库账号权限。
- SQL 执行报错「参数未定义」
原因:参数名拼写错误、参数未配置、参数值为空;
解决:检查「自定义参数」配置,在 SQL 中增加 SELECT '${参数名}' 调试参数值。
- 多条 SQL 部分执行失败
原因:未开启事务,前序 SQL 失败后后续仍执行;
解决:开启「事务支持」(仅支持事务的数据库),或拆分 SQL 为多个独立 SQL 任务。
- SELECT 结果为空
原因:SQL 逻辑错误、参数值错误、数据不存在;
解决:在数据库客户端手动执行 SQL(替换参数值),验证逻辑正确性。
- SQL 执行超时
原因:SQL 逻辑复杂、数据量过大、数据库资源不足;
解决:优化 SQL(加索引、分批次执行),调整「超时时间」,增加数据库资源。