前言:
眼前你们对“kettle数据库连接变量”大体比较着重,大家都需要了解一些“kettle数据库连接变量”的相关内容。那么小编同时在网上搜集了一些有关“kettle数据库连接变量””的相关资讯,希望大家能喜欢,同学们快快来学习一下吧!一、认识表输入(inputTable)
表输入是Kettle用来查询数据库数据的组件,即通过执行SELECT语句,从数据库拉取输入数据,首先看看原版的界面中都有哪些元素,这些元素的大概意思是什么。
界面参数说明:
数据库连接: 同个脚本配置了多数据源的情况下选择该组件要连接的数据源;编辑: 编辑选中的数据库连接信息;新建: 创建数据库连接;获取SQL查询语句: 通过选择数据库中的数据表生成默认的SQL语句;输入框: 自定义SQL语句;允许简易转换:大字段的延迟转换(延迟转换性能更高,采用byte方式处理,否则就是string方式)替换SQL语句中的变量: 如果需要传入参数则勾选上;从步骤插入数据: 如果该组件有上一步骤,且需要从该步骤中获取变量作为参数则选中上一步骤;执行每一行: 如果上一步骤是一个集合且该表输入需要遍历集合进行查询则勾选上;记录数量限制: 限制要查询的数据记录数,0表示没有限制。
二、API开发实现
1.API 开发界面效果,其中数据库连接部分已经在开源ETL工具Kettle(PDI)开发(四)数据库连接开发中介绍了,这里不再赘述了,数据转换图形化编辑部分后面文章会专门介绍。
2.编辑步骤的代码实现,双击转换界面的步骤节点
根据选择步骤类型打开不同界面,我们选择的表输入。表输入属性都是从Xml信息获取的,具体代码如下。
这里涉及到生成sql语句、数据浏览代码由于代码篇幅太长,就不贴出来了,有兴趣的可以到我开源的代码库中去下载代码。(后台java代码部分已经开源,地址:)
三、表输入如何实现变量传参
有时候业务上需要动态查询数据,这时候就需要传入参数来实现,传入参数的方式有两种,包括从之前步骤中获取及从系统环境中获取,无论使用哪一种都是通过在SQL语句中设置占位符来实现动态查询。
第一种方式从之前步骤中获取:
第二种方式从环境变量中获取:
注意:
1.两种方式在定义参数上有所不同,从前步骤获取用?作为参数,变量的的顺序和表输入sql的顺序要保持一致,从系统环境变量获取用${}作为参数,这种方式命名上一定不能和系统参数和命名参数保持一致。
2.在表输入sql语句只执行查询语句包括查询的存储过程,其他update、delete等非查询语句都不会执行。
3.在传参时,是不能预览数据的。
常见问题一
kettle 使用表输入连接mysql获取字段名时,报check the manual that corresponds to your MySQL server version for the right syntax to use near ‘OPTION SQL_SELECT_LIMIT=DEFAULT’ 错误
kettle 报错原因分析:
5.6以下的mysql数据库,在连接数据库时候会发送测试语句SET OPTION SQL_SELECT_LIMIT=DEFAULT,通常在mysql-connector-java-5.1.25.jar以前为了保持5.6的兼容,保留了此功能,若是mysql server版本号小于5.6,那么此功能支持;若mysql版本号大于5.6,那么则不支持此功能,需要升级mysql connector版本,否则会引起此报错。
解决办法
升级mysql-connector-java为mysql-connector-java-5.1.47.jar,即可正常使用。
标签: #kettle数据库连接变量