KETTLE工具-初体验
1、工具使用
window系统环境
打开data-integration目录下的Spoon.bat,版本为6.1
- 新建转换或作业
2、数据库连接
2.1、新建数据库连接
数据库连接有三种方式:普通局部配置、变量局部配置、局部配置,这里以MySQL为例子
2.2、普通局部配置
- 选择连接类型,这里选择MySQL
- 连接方式选择Native(JDBC)
- 右侧填写数据库连接信息
- 点击Test,保存即可
2.3、变量局部配置
- 在c盘用户下找到“.kettle”,我这里是C:\Users\Administrator.kettle
- 编辑kettle.properties,加入
CHAPTER1_IP=host
CHAPTER1_PORT=port
CHAPTER1_DB=数据库
CHAPTER1_USER=用户
CHAPTER1_PWD=密码 - 重启Kettle,如图所示,使用 ${}引用变量 即可
2.4、全局配置
-
选择连接类型,这里选择MySQL
-
连接方式选择JNDI
-
右侧填写JNDI编写的名称
-
点击Test,保存即可
-
JNDI模板如下
driver驱动包可自定义,记得将驱动包放入lib目录(mysql是缺失驱动包,记得去官网下载驱动包,这里是Java)
#SqlServer
sqlserver/type=javax.sql.DataSource
sqlserver/driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserver/url=jdbc:sqlserver://xxxhost;DatabaseName=xxxdb
sqlserver/user=
sqlserver/password=
#Oracle
oracle/type=javax.sql.DataSource
oracle/driver=oracle.jdbc.driver.OracleDriver
oracle/url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = xxxhost)(PORT = xxxport))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = xxxserviceInstance)))
oracle/user=
oracle/password=
#MySql
mysql/type=javax.sql.DataSource
mysql/driver=com.mysql.jdbc.Driver
mysql/url=jdbc:mysql://xxxhost:xxxport/xxxdb?useUnicode=true&characterEncoding=utf-8
mysql/user=
mysql/password=
3、延伸
3.1、数据库密码-明文加密
采用变量局部配置方式
在kettle目录下会看到Encr.bat这样一个命令行工具,在当前目录打开cmd
Encr.bat -kettle password,会生成出一串加密串
3.1.1、变量局部配置
将Encr.bat生成的密码填入
将Encrypted 2be98afc807de8195a748fb2787cafa94在kettle.properties替换即可
,CHAPTER1_PWD=Encrypted 2be98afc807de8195a748fb2787cafa94
3.1.2、全局配置
当时写这篇文章是2019年4月,现在!终于官方出解决方案了
按照这位大佬的讲述,去到github-pentaho-simple-jndi看下,由simple-jndi-1.0.0升级到simple-jndi-1.0.3
可以去github下载该项目,手动编译打包。也可以采用大佬打包好的
包地址 提取码: ub7c
如果不见了,可以用我的 提取码:j9c
1、参考
db 文件 加密_有人说Kettle 数据库JNDI方式数据库密码不能加密,搞他!【2.3 全局配置章节】
4、总结
- 驱动包一定要跟数据库版本一致,不然会获取表字段失败等问题
- 数据库连接总共有三种方式:普通局部配置、变量局部配置和全局配置,优缺点如下
-
普通、变量局部配置需要每个job/tran都填写一次连接信息,很烦
有个折中办法:将该连接配置共享,每个打开的job/tran都能共享该连接配置。弊端:把其它业务的连接配置给引用进来,主动暴露方式真low,没做到业务分离
缺点:不支持指定驱动包
-
全局配置
- 做到插拔式引用
- 对每个jon/tran是透明的
- 做到业务分离,每个业务流程互不干扰
- 支持指定驱动包,遇到过采用局部配置连接SqlServer会报连接错误,估计是kettle默认的驱动包有问题
-