原文地址:http://www.xue51.com/soft/5341.htmlhtml
Kettle是来自国外的一款开源的ETL工具,纯java编写,能够在Window、Linux、Unix上运行,绿色无需安装。Kettle能够帮助你实现你的ETTL须要:抽取、转换、装入和加载数据数据,且抽取高效稳定。Kettle这个ETL工具集,翻译成中文名称应该叫水壶,寓意为但愿把各类数据放到一个壶里而后以一种指定的格式流出。它容许你管理来自不一样数据库的数据,经过提供一个图形化的用户环境来描述你想作什么,而不是你想怎么作。java
官方网站下载地址:https://community.hitachivantara.com/docs/DOC-1009855 目前最新稳定版本已经到8.2了。sql
Kettle家族目前包括4个产品:Spoon、Pan、CHEF、Kitchen。 数据库
一、打开Spoon.bat,打开后请耐心等待一下子时间。
二、配置Kettle的环境变量:(前提是配置好Java的环境变量,由于他是java编写,须要本地的JVM的运行环境)在系统的环境变量中添加KETTLE_HOME变量,目录指向kettle的安装目录
新建系统变量:KETTLE_HOME
变量值: D:\kettle\data-integration(具体以安装路径为准,Kettle的解压路径,直到Kettle.exe所在目录)
选择PATH添加环境变量:
变量名:PATH
变量值:% KETTLE_HOME%;
三、创建转换。
在文件->新建装换。
新建转换后在左边的主对象树中创建DB链接用以链接数据库。
创建数据库链接的过程与其余数据库管理软件链接数据库相似。
注意:在数据库连接的过程当中,可能会报某个数据库链接找不到的异常。那是由于你没有对应的数据库连接驱动,请下载对应驱动后,放入kettle的lib文件夹。
四、简单的数据表插入\更新
新建表插入
在左边的面板中选择“核心对象”,在核心对象里面选择“输入->表输入”,用鼠标拖动到右边面板。
五、双击拖过来的表,能够编辑表输入。
选择数据库链接和编辑sql语句,在这一步能够点击预览,查看本身是否链接正确。
六、经过插入\更新输出到表。
在左边面板中选择核心对象、选择“输出->插入\更新”
七、编辑插入更新:
首先:表输入链接插入更新。
选中表输入,按住shift键,拖向插入更新。
八、而后:双击插入更新,编辑它。
到这里基本上,这个转换就要作完了,能够点击运行查看效果,看是否有误,这个要先保存了才能运行,能够随意保存到任何一个地方。
九、使用做业控制上面装换执行。
使用做业能够定时或周期性的执行转换,新建一个做业。并从左边面板拖入start 和转换。
十、双击start能够编辑,能够设置执行时间等等
十一、点开装换,能够设置须要执行的转换任务,好比能够执行上面咱们作的转换,XXX.ktr最后点击运行便可。缓存
一、表视图模式:这种状况咱们常常遇到,就是在同一网络环境下,咱们对各类数据源的表数据进行抽取、过滤、清洗等,例如历史数据同步、异构系统数据交互、数据对称发布或备份等都归属于这个模式;传统的实现方式通常都要进行研发(一小部分例如两个相同表结构的表之间的数据同步,若是sqlserver数据库能够经过发布/订阅实现),涉及到一些复杂的一些业务逻辑若是咱们研发出来还容易出各类bug;
二、前置机模式:这是一种典型的数据交换应用场景,数据交换的双方A和B网络不通,可是A和B均可以和前置机C链接,通常的状况是双方约定好前置机的数据结构,这个结构跟A和B的数据结构基本上是不一致的,这样咱们就须要把应用上的数据按照数据标准推送到前置机上,这个研发工做量仍是比较大的;
三、文件模式: 数据交互的双方A和B是彻底的物理隔离,这样就只能经过以文件的方式来进行数据交互了,例如XML格式,在应用A中咱们开发一个接口用来生成标准格式的XML,而后用优盘或者别的介质在某一时间把XML数据拷贝以后,而后接入到应用B上,应用B上在按照标准接口解析相应的文件把数据接收过来网络
一、Kettle没法启动
修改一下spoon.bat里内存配置:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" "-XX:MaxPermSize=256m"
改成
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"
二、如何链接资源库?
若是没有则建立资源库
三、如何链接数据库?
在链接数据库以前,首先须要保证当前在一个transform(转换)页面,而后点击左侧选项栏中的“主对象树”,而后右键点击“DB链接”,选择“新建”。
固然也能够设置一些其余的链接属性,如zeroDateTimeBehavior=round&characterEncoding=utf8。
四、如何解决数据库链接更新不及时问题?
有时候咱们数据库中的表的字段进行了更新(增长或删除字段),可是在使用“表输入”控件的“获取SQL语句”功能是会发现的到的字段仍是原来的字段,这是因为缓存形成的,须要进行缓存清理。
五、如何解决Unable to read file错误?
有时候咱们在文件夹中将Job或Transform移动到其余目录以后,执行时会出现Unable to read file错误。而后就进入到了当前Transform的配置页面。修改配置中的目录便可。
六、如何解决tinyint类型数据丢失问题?
在Kettle使用JDBC链接MySQL时,对于表中数据类型为tinyint的字段,读取时有可能会将其转为bool类型,这有可能形成数据丢失。例如,有一个叫status名字的tinyint类型字段,取值有三种:0、一、2。kettle读取以后极可能将0转为false,一、2都转为true。输出时,将false转为0,true转为1,这样就会形成元数据中status为2的数据被错误的赋值为1。
解决这个问题时,能够在读取元数据时将status转为int或char。好比SELECT CAST(status as signed) as status FROM 或SELECT CAST(status as char) as status FROM数据结构