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 |
状态管理:
该组件不保存状态。
限制:
该组件没有限制
输入流要求:
组件允许提供输入流。
系统资源考量:
未提供。