Kettle
Data Integration (or Kettle) delivers powerful Extraction, Transformation, and Loading (ETL) capabilities, using a groundbreaking, metadata-driven approach.
Hello World
一、Download
Download from here.
二、Install
因kettle为免安装软件,解压缩到任意本地路径即可.
三、Env Prepare
此文件为Java编写。需要配置对应的JDK环境。
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) Client VM (build 24.79-b02, mixed mode, sharing)
四、运行
- Windows
双击运行 Spoon.bat
即可。可能遇到虚拟机无法启动的错误,修改一下 Spoon.bat
内容
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
修改 “-Xmx2048m” 为 “-Xmx1024m” 即可。
- Mac
双击运行 Spoon.command
。
Quick Start
- 数据库连接
org.pentaho.di.core.exception.KettleDatabaseException:
Error occurred while trying to connect to the database
Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
org.gjt.mm.mysql.Driver
at org.pentaho.di.core.database.Database.normalConnect(Database.java:472)
...
Caused by: org.pentaho.di.core.exception.KettleDatabaseException:
Driver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.
org.gjt.mm.mysql.Driver
at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:515)
at org.pentaho.di.core.database.Database.normalConnect(Database.java:456)
... 74 more
Caused by: java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:490)
... 75 more
解决方案。
把本地驱动文件(如mysql-connector-java-5.1.20.jar
)放到了 data-integration\libswt\win64
下面,当然也可以放到 data-integration\lib
等程序可以找到的位置,也可以修改一下系统的环境变量,使该驱动可以被找到
切记,要重启spoon。
- 数据准备。
1、首先创建2个数据库,kettle、kettle2。
2、在两个数据库都是用以下脚本创建表。
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键, 自增',
`name` varchar(64) NOT NULL COMMENT '用户名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
3、我们在 kettle.user 中执行以下脚本,插入数据。
INSERT INTO user (name) VALUES
('I'),
('Like'),
('Kettle');
数据如下
1 I
2 Like
3 Kettle
我们下面演示,如何使用 Kettle 让一个数据库表的数据,直接迁移到另外一张表中。
- kettle 实现
1、使用 Kettle,新建一个表输入,指定我们的数据源。如下:
SQL 就简单的查询即可:
SELECT name FROM user WHERE name IS NOT NULL
2、插入/更新
3、运行测试
直接运行即可。Console 会输出对应 LOG。有些类似于 SQL SERVER 的导入导出。但是 KETTLE 更加强大灵活。