kettle使用教程-1

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

第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中

 

今天的文章kettle使用教程-1分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/55676.html

(0)
编程小号编程小号
上一篇 2023-08-27 17:06
下一篇 2023-08-27

相关推荐

发表回复

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