Skip to main content

ExecuteSQL

描述:

执行SQL查询. 查询结果会转换成Avro格式. 返回的数据流支持任意大的结果. 组件可以定时执行,也可以写计划任务表达式, 用标准的定时方法, 或者可以被输入流文件触发. 如果被输入的流文件触发, 那么输入流文件的属性全部都可以被查询SQL使用, 查询语句可以用问号代替参数,然后输入的数据流文件必须以这样的格式命名 sql.args.N.type 和 sql.args.N.value,其中N是正整数,参数 sql.args.N.type 是表示JDBC类型的数字. 流文件的内容预计是UTF-8格式的.流文件的属性'executesql.row.count'表示查询结果的行数。

标签:

sql, select, jdbc, query, database,数据库,查询

参数:

如下列表中,必填参数则标识为加粗. 其他未加粗参数,则表示为可选参数。表中同时提到参数默认值设置, 并且 参数还支持 表达式语言.

名字默认值允许值列表描述
数据库连接池服务控制器服务API:
DBCPService
实现:
DBCPConnectionPoolLookup
DBCPConnectionPool
数据库连接池服务用来获得数据库连接
数据库查询执行数据库查询语句. 查询可以是空的,也可以是常量, 或者使用表达式表示数据流文件中的属性. 如果设置了SQL,那么输出流就会被重置为查询结果,抛弃输入的数据流文件. 如果不设置此项,那么需要输入的数据流文件内容包括SQL语句。

支持表达式语言 (支持流属性和变量)
最大等待时间0 seconds最大等待SQL查询执行的时间 , 0表示不限制. 最大时间小于1秒,则相当于1秒.
规范化表/列名
- 是
- 否
是否改变一些不兼容avro格式的特殊字符,为了适应Avro格式,比如冒号、句号会被改成下划线。
使用Avro数据类型
- 是
- 否
是否使用Avro逻辑的数据类型,比如 时间,数字,日期等格式,如果否,那么将以字符串代替原有的数据类型。如果是,逻辑数据类型将基于如下规则:'DECIMAL/NUMBER' 对应 'decimal','DATE' 对应 'date-millis','TIME' 对应 'time-millis', 'TIMESTAMP' 对应 'timestamp-millis'。
小数精度10当类型是'DECIMAL/NUMBER' 对应 'decimal'的默认小数精度

支持表达式语言 (支持流属性和变量)
小数四舍五入位数0当类型是'DECIMAL/NUMBER' 对应 'decimal'的四舍五入的小数位数

支持表达式语言 (支持流属性和变量)

连线:

名字描述
success当成功执行SQL并返回结果,将输出数据流到此连线
failure当执行SQL失败,将惩罚输入数据流并输出原始数据流到此连线

读取属性:

名字描述
sql.args.N.type输入的数据流被用来参数化查询. 每个参数的类型用一个数字来代表参数的JDBC类型.
sql.args.N.value输入的数据流被用来参数化查询. 参数设置成 sql.args.1.value, sql.args.2.value, sql.args.3.value 等等. 参数值sql.args.1.value的数据类型是 sql.args.1.type.
sql.args.N.format输入的数据流被用来参数化查询.参数格式,例如日期格式:yyyy-MM-dd

写入属性:

名字描述
executesql.row.count查询返回的行数
executesql.query.duration查询过程所持续的时间(毫秒)
executesql.resultset.index如果返回多个结果集,那么返回第一个,序号是0

状态管理:

该组件不保存状态。

限制:

该组件没有限制

输入流要求:

组件允许提供输入流。

系统资源考量:

未提供。