1、Kettle概念
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
2.安装与启动
KETTLE本身是绿色安装版软件,直接对压缩包解压后即可使用,在Linux操作系统下通过.sh文件运行,在Windows操作系统下对应的是.bat文件
spoon.bat一闪而过,无法打开的问题:内存设置
spoon.bat修改
if “%PENTAHO_DI_JAVA_OPTIONS%”=="" setPENTAHO_DI_JAVA_OPTIONS="-Xms512m" “-Xmx512m”"-XX:MaxPermSize=256m"
3.常用组件
- 数据库连接
- sql脚本
- 表输入(数据来源表)
- 字段选择
- 表输出(落新表)
- 插入/更新
当然kettle自带了非常多的组件可使用,目前只接触了这些。kettle也支持将文件作为输入输出等等。
4.具体案例
服务器上的pgsql和本地的sqlserver 之间的数据迁移简单案例
pgsql: result user_number user_name -> sqlserver:demo_user user_id user_name
总体结构:
sql脚本先清除了sqlserver中demo_user表的数据
然后表输入,选择了pgsql:result表中的所有字段
字段选择,选择了user_number user_name并改名为user_id user_name
表输出,选择sqlserver:demo_user
组件之间使用 shift+鼠标左键连接
图中下边有个独立的表输入2只是用于查看数据迁移是否生效,直接去数据库看是一样的。
4.1 数据库连接
sqlserver需要手动下载驱动jar至kettle的lib中https://sourceforge.net/projects/jtds/files/latest/download
这里分别是服务器中的pgsql和本地sqlserver
3.2 sql脚本
清除pgsql中的rc_user表,便于以后查看从sqlserver迁移过来的数据
3.3 表输入
数据库连接->表->sql语句->预览
服务器pgsql至本地sqlserver
只迁移了user_number user_name
pgsql: result user_number user_name -> sqlserver:demo_user user_id user_name
3.4 字段选择:
获取选择的字段->修改或移除
也可以直接在sql中筛选字段,这样更容易维护
3.5 表输出
选择要作为表输出的库和表
点击执行即可完成,数据迁移。
pgsql: result user_number user_name -> sqlserver:demo_user user_id user_name