kettle使用教程-1

kettle使用教程-1第1章kettle概述1.1什么是kettleKettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。1.2Kettle核心知识点1.2.1Kettle工程存储方式1)以XML形式存储2)以资源库方式

大家好,欢迎来到IT知识分享网。

第1章 kettle概述

1.1 什么是kettle

Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

1.2 Kettle核心知识点

1.2.1 Kettle工程存储方式

1) 以XML形式存储

2) 以资源库方式存储(数据库资源库和文件资源库)

1.2.2 Kettle的两种设计

简述:Transformation(转换):完成针对数据的基础转换。

Job(作业):完成整个工作流的控制。

区别:(1)作业是步骤流,转换是数据流,这是作业和转换的最大区别

(2)作业的每一个步骤,必须等到前面的步骤都跑完了,后面的步骤才会执行;而转换会一次性把所有控件全部先启动(一个空间对应启动一个线程),然后数据流会从第一个控件开始,一条记录,一条记录地流向最后的控件。

 kettle使用教程-1

1.2.3 Kettle的组成

勺子(spoon.bat/spoon.sh):是一个图形化的界面,可以让我们用图形化的方式开发转换和作业。Windows选择spoon.bat;Linux选择spoon.sh
煎锅(pan.bat/pan.sh):利用pan可以用命令行的形式调用Trans
厨房(kitchen.bat/kitchen.sh):利用kitchen可以使用命令调用Job
菜单(carte.bat/carte.sh):carte是一个轻量级的web容器,用于建立专用、远程的ETL Server
1.3 kettle特点

免费开源:基于Java的免费开源的软件,对商业用户也没有限制

易配置:可以在window、Linux、unix上运行,绿色无需安装,数据抽取高效稳定

不同数据库:ETL工具集,它允许你管理来自不同数据库的数据

两种脚本文件:transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制

图形化界面设计:通过图形化设计实现做什么业务,无需写代码去实现

定时功能:在job下的start模块,有一个定时功能,可以每日、每周等方式进行定时。

第2章 kettle安装部署和使用
2.1 kettle安装地址

官网地址

https://community.hitachivantara.com/docs/DOC-1009855

下载地址

https://sourceforge.net/projects/pentaho/files/Data%20Integration/

kettle各版本国内镜像下载地址:http://mirror.bit.edu.cn/pentaho/(下载速度相对快一些)

2.2 Windows下安装使用

2.2.1 概述

在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也可以连接远程机器运行

2.2.2 安装

1) 安装jdk

2) 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

3) 双击Spoon.bat,启动图形化界面工具,就可以直接使用了

2.2.3 案例

1) 案例一 把stu1的数据按id同步到stu2,stu2有相同id则更新数据

(1)在mysql中创建两张表

mysql> create database kettle;

mysql> use kettle;

mysql> create table stu1(id int,name varchar(20),age int);

mysql> create table stu2(id int,name varchar(20));

 kettle使用教程-1

 

 

 

(2)往两张表中插入一些数据

mysql> insert into stu1 values(1001,’zhangsan’,20),(1002,’lisi’,18), (1003,’wangwu’,23);

mysql> insert into stu2 values(1001,’wukong’);

 kettle使用教程-1

 

 

 

(3)在kettle中新建转换
kettle使用教程-1

 

 

 

4、然后新建两个数据库的连接

kettle使用教程-1

 

 

 

kettle通过域名或者IP连接Oracle,因为今天客户要求把数据库由原来的MySQL切换到Oracle,历史数据的迁移。本篇博客主要讲解kettle连接Oracle数据库。本机不需要安装Oracle,但是要把Oracle的驱动jar包复制到kettle的lib目录下:

Oracle驱动jar包:(包括:ojdbc5.jar、ojdbc6.jar、ojdbc7.jar、ojdbc8.jar、ojdbc10.jar、ojdbc14.jar)

链接: https://pan.baidu.com/s/1DMB8vF_iFqJsyi7YoJnvHA

提取码: zdm6

我这里用的是:ojdbc6.jar

准备工作完成,下面连接Oracle:

kettle使用教程-1

 

 

 

主机名称:不用填

数据库名称:填写域名或者IP:端口/服务名

数据表空间:不用填

索引表空间:不用填

端口号:-1,因为再填写数据库名称时已经填写,所以这里填写-1

用户名:用户名

密码:密码

点击:测试

kettle使用教程-1

 

 

 

然后就是MySQL的

kettle使用教程-1

 

点击测试

 

 kettle使用教程-1

 

 

 

还有就是一开始没导入MySQL的驱动也会报错:如下

错误连接数据库 [test] : 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


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)
	at org.pentaho.di.core.database.Database.connect(Database.java:370)
	at org.pentaho.di.core.database.Database.connect(Database.java:341)
	at org.pentaho.di.core.database.Database.connect(Database.java:331)
	at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:80)
	at org.pentaho.di.core.database.DatabaseMeta.testConnection(DatabaseMeta.java:2783)
	at org.pentaho.ui.database.event.DataHandler.testDatabaseConnection(DataHandler.java:597)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:313)
	at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:157)
	at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:141)
	at org.pentaho.ui.xul.swt.tags.SwtButton.access$500(SwtButton.java:43)
	at org.pentaho.ui.xul.swt.tags.SwtButton$4.widgetSelected(SwtButton.java:137)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
	at org.eclipse.jface.window.Window.open(Window.java:796)
	at org.pentaho.di.ui.xul.KettleDialog.show(KettleDialog.java:80)
	at org.pentaho.di.ui.xul.KettleDialog.show(KettleDialog.java:47)
	at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:116)
	at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:60)
	at org.pentaho.di.ui.spoon.delegates.SpoonDBDelegate.editConnection(SpoonDBDelegate.java:96)
	at org.pentaho.di.ui.spoon.Spoon.doubleClickedInTree(Spoon.java:3108)
	at org.pentaho.di.ui.spoon.Spoon.doubleClickedInTree(Spoon.java:3043)
	at org.pentaho.di.ui.spoon.Spoon.access$2300(Spoon.java:361)
	at org.pentaho.di.ui.spoon.Spoon$26.widgetDefaultSelected(Spoon.java:6184)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
	at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1366)
	at org.pentaho.di.ui.spoon.Spoon.waitForDispose(Spoon.java:8022)
	at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9277)
	at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:692)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)
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)
	... 47 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)
	... 48 moreqq'y'd

 

 

kettle使用教程-1

加入驱动是这个,放在目录lib中

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31090.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信