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,新建一个表输入,指定我们的数据源。如下:

table input

SQL 就简单的查询即可:

SELECT name FROM user WHERE name IS NOT NULL

2、插入/更新

table input

3、运行测试

直接运行即可。Console 会输出对应 LOG。有些类似于 SQL SERVER 的导入导出。但是 KETTLE 更加强大灵活。

任务调度

任务调度