版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Kettle 开发使用手册2 01 7 年 4 月版本历史说明版本作者日期备注1.0彭伟峰2017.04.111. Kettle 介绍1.1. 什么是 KettleKettle 是纯 Java编写的、免费开源的 ETL工具,主要用于抽取 (Extraction) 转换(Transformation) 、和装载( Loading )数据。 Kettle 中文名称叫水壶,该 项目的主程序员 MATT希 望把各种数据放到一个壶里,然后以一种指定的格式流 出。在这种思想的设计下, Kettle 广泛用于不同数据库之间的数据抽取,例如 Mysql 数据库的数据传到 Oracle ,Oracle 数据库的
2、数据传到 Greenplum数据库。1.2. Kettle 的安装Kettle 工具是不需要安装的,直接网上下载解压就可以运行了。不过它依 赖于 Java,需要本地有 JDK环境,如果是安装 4.2 或 5.4 版本, JDK需要 1.5 以上的版本,推荐 1.6 或 1.7 的 JDK。运行 Kettle 直接双击里面的批处理文件 spoon.bat 就行了,如图 1.1 所示:图 1.12. Kettle 脚本开发2.1. 建立资源库( repository 仓库)Repository 仓库是用来存储所有 kettle 文件的文件系统, 由于数据交换平 台服务器管理 kettle 文件也是
3、用 Repository 仓库,因此我们这边本地的 kettle 开发环境也是要用到该资源库。 建立资源库的方式是工具 -> 资源库 - -> 连接 资源库,这时候弹出一个窗口, 我们点击右上角的“ +”号,跟着点击下面的 kettle 选项,按确定,如图 2.1 所示:图 2.1跟着在右上角选择一个目录,建议在 kettle 路径下新建 repository 文件 夹,再选择这个文件夹作为根目录,名称和描述可以任意写,如图 2.2 所示:图 2.2建完后会 kettle 工具会自动连接到 repository 资源库,每次打开 kettle 也会弹出一个窗口让你先连接到资源库。
4、在连接到资源库的情况下打开文件就是 资源库所在目录了, 如图 2.3 所示。注意你在资源库建的目录结构要跟数据交换 平台的目录结构一致,这样写好 kettle 脚本,保存后放的路径能跟交换平台的 目录结构一致了。图 2.32.2. 在目标数据库里新建表在做数据迁移的时候我们需要先在目标数据库建立与源数据库类似的表结 构,才能在这两张表之间做数据迁移,以 oracle 数据库到 gp 数据库, T_SF_DWJFDJXX_TES表T做数据迁移为例,我们先建类似的表结构,首先先把表 结构的代码拷出来:create table T_SF_DWJFDJXX_TEST(NSRNBMNUMBER(10)
5、not null,DWSBH VARCHAR2(18) not null,JFDWNBM NUMBER(10) not null,HYFL_DM CHAR(1) not null,JFDWLX_DM CHAR(3) not null,SBJC_DM CHAR(2) not null,SBGLJG_DM VARCHAR2(11) not null,SWGLJG_DM VARCHAR2(11) not null,SBDJ_ZT CHAR(2) not null,DJSLRY_DM VARCHAR2(11),DJSL_RQ DATE,LRRY_DMVARCHAR2(11),XGRY_DMVARCHA
6、R2(11),DJ_RQDATE,DJJG_DMVARCHAR2(11),LR_SJTIMESTAMP(6),XG_SJTIMESTAMP(6),ZDFY_BJCHAR(1),XMMCVARCHAR2(100),KNQYBZ_DM CHAR(1),ZDYCKJN_BJ CHAR(1),SJJHPT_SJ TIMESTAMP(6),SJJHPT_DZ NUMBER(14) );跟着在这个表结构的基础上,在目标数据库创建新表。需要注意的是, gp 数据库的数据类型有些跟 oracle 的一样,有些不同。相同的就不用改了,不同 的就改下。以上面的数据类型为例,相同的有 char 、date 、tim
7、estamp ,不同的 是 varchar2 和 number,因此, varchar2(n) 要改成 varchar(n) ,number(n) 要改 成 integer (注意不带数字长度 n)。建完之后,我们就可以在这不同数据库的 两张表之间进行数据迁移或数据定时传输。2.3. 源数据库和目标数据库的 jndi 设置Jndi 是 kettle 连接数据库的配置文件, 相当于 oracle 的 tns 。Jndi 设置的 目录是在 kettle 目录下的 simple-jndi 文件夹里,打开后编辑 perties 来设置 jndi ,下面附上公司揭阳涉税项目 oracle
8、 到 gp 数据库的 jndi 设置,分 别是源端 oracle 数据库和目标端 gp 数据库。配置信息的斜杠左边是 jndi 名, 这里 jndi 的命名规则是数据库名 _用户名,注意本地的 jndi 名要跟交换平台的 jndi 名一致。配置信息的斜杠右边分别是数据库类型、 驱动、数据库地址、 用户名和密码 注意,相同数据库配置写法相同,不同数据库的配置写法略有不同,像下面的 oracle 和 gp 数据库的 driver 和 url 地址写法就不一样。oracle_db_mhpt/type=javax.sql.DataSource oracle_db_mhpt/driver=oracle.
9、jdbc.driver.OracleDriver oracle_db_mhpt/url=jdbc:oracle:thin:1:1521:zrmhdb oracle_db_mhpt/user=db_mhptoracle_db_mhpt/password=DB_MHPT gp_public/type=javax.sql.DataSource gp_public/driver=org.postgresql.Driver gp_public/url=jdbc:postgresql:/65:5432/postgres gp_public/database=8g
10、p_public/user=gpadmin gp_public/password=gpadmin2.4. 写 kettle 脚本Kettle 脚本有两种, ktr 脚本跟 kjb 脚本,其中 ktr 负责执行,具体要做什 么由 ktr 来负责; kjb 负责调度,调用一个或多个 ktr 。 Ktr 和 kjb 的关系类似 于像员工和领导之间, 员工负责具体的事务操作, 领导负责计划安排工作。 新建 ktr 脚本可以点击左上角的文件 -> 新建 -> 转换, 新建 kjb 脚本就文件 -> 新建 -> 作业。我们这里传输数据只要用到 kjb 脚本,一张表的数据传输要有 1
11、 个脚本。首先先新建一个 ktr 文件,如图 2.4 所示,跟着我们按照主界面的提示拖动 主键来操作。拖动组件在核心对象的组件库里。图 2.4跟着我们需要 4 个组件,分别是获取变量、表输入、字符串操作、插入 /更 新,先从组件库里找到这些组件然后拖动到右边面板上, 查找组件可以用组件名 称来在组建的搜索框里搜索。拖动后如图 2.5 所示。图 2.5然后给他们组件之间建立连接,用拉箭头来连接即可,如图 2.6 所示:图 2.6组件之间连接完之后,跟着双击组件一个个编辑。第一步是获取变量,在获 取变量前首先要设置入参用来获取变量, 设置变量先双击主对象树的 ktr 名(转 换 1 是未保存文件到
12、本地的默认名) ,跟着设置命名参数。 如图 2.7 跟 2.8 所示。 其中 start_timestamp 和 end_timestamp 这两个是数据交换平台服务器上默认的 用于增量抽取数据的两个入参, 分别表示数据开始时间跟数据结束时间。 这里填 上了默认值方便测试。图 2.7图 2.8设置入参后再编辑获取变量的组件, 这里名称跟入参一样, kettle 变量名 的写法是 $Variables ,类型我们选择 string ,因为服务器上交换平台传进来 的 start_timestamp 和 end_timestamp 参数也是 string 类型的,我们这里跟它 一致。也如图 2.9
13、所示:图 2.9第二步是表输入,首先要先连接数据库, 之前我们在本地文件上配置了 jndi , 这里 jndi 就用得上。新建或编辑数据库连接,选择好连接的数据库,还有 jndi 连接方式,再填上 jndi 名称和连接名称,设置完了就点击左下角的测试来测试 本地能不能连上数据库。连上了我们才做其他的步骤。图 2.10连通好后, 写好 sql 语句。这里 sql 语句用到变量, kettle 变量的写法是 $variables ,而使用变量要在左右两端再加上单引号, 变成 '$variables ' 注意数据库后台的日期类型是 date ,而变量是字符串类型,因此需要做个变量 的
14、类型转换。因为有使用变量,所以需要勾上“替换 sql 语句里的变量”单选框。 设置好后可以预览下数据看下。图 2.11第三步是字段去除左右空格,编辑“字符串操作”,点 get fields 获取从 上个步骤表表输入获取的字段名,然后把 trim type 全部选择 both ,意思是去 除字段左右两端的空格。如果 get fields 得到的字段有 start_timestamp 和 end_timestamp 这两个,这两个多余的,就删去。如下图所示:图 2.12第四步是插入数据到目标端的新表,首先是要先连通目标端的数据库。设置好后再点击“测试”连通到目标端的数据库图 2.13跟着是设置目标
15、表(目标模式可以不填),点击浏览选择模式 / 用户下的数 据库表。然后设置每插入多少条数据提交的提交记录数量, 用来查询的关键字选 择主键的字段,而更新字段是全部,点击获取字段即可。他这里操作的原理是: 如果目标表有符合该查询的条件的记录时, 那么更新此条数据; 不符合时, 那么 将源表的此条数据插入到目标表。图 2.14这四个步骤编辑完成后最后就是执行这四个步骤了,点击左上角的运行图 标,设置时间参数或者时间参数按照默认值, 运行后, 如果全部组件都有绿色勾 勾的标志的话说明全部运行成功, 如下图所示。 如果某一个步骤失败的话就是红 色勾勾的标志, 这时候就要看日志或者步骤度量来分析了。 从下面的步骤度量看 表输入有 1 条数据输入进来,插入 / 更新步骤有 1 条数据写进去了。图 2.153. 在数据交换平台设置定时任务以公司这边的数据交换平台为例(admin/admin ),如果交换平台的 jndi 设置没有设置的话, 那么要首先设置这样 跑 kettle 脚本的话才能连到数据库,注意本地 kettle 的 jndi 名要跟交换平台 的 jndi 名一致,需要统一命名。图 3.1跟着将脚本放上服务器,可以在页面上上传文件到服务器图 3.2上传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 圆锥曲线中的面积问题+课件-2026届高三数学二轮复习
- 工程招标考试试题及答案
- 2026三年级数学上册 图形的能力测试
- 2026六年级数学下册 圆柱圆锥组合体
- 口腔正畸拍照试题及答案
- 政治学原理试题库及答案
- 企业工程档案制度
- 2025 高中信息技术数据与计算在项目式学习课件
- 企业安全培训奖惩制度
- 亚马逊运营部奖惩制度
- 2026年常州工业职业技术学院单招职业适应性测试题库及答案详解(历年真题)
- 2026四川成都市金牛国投人力资源服务有限公司招聘金牛区街区规划师8人考试参考试题及答案解析
- 2026年国企供排水试题及答案
- 2026年南京旅游职业学院单招职业技能测试题库及答案详解(考点梳理)
- CMA质量手册(2025版)-符合27025、评审准则
- Peppa-Pig第1-38集英文字幕整理
- 统计用产品分类目录
- 雅培Perclose血管缝合器使用过程中常见问题及解决方法
- 中小学生课外读物负面清单自查表
- YS/T 73-2011副产品氧化锌
- WS 319-2010冠状动脉粥样硬化性心脏病诊断标准
评论
0/150
提交评论