版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、版本历史说明版本作者日期备注1.0彭伟峰2017.04.111.Kettle介绍11什么是KettleKettle是纯Java编写的、免费开源的ETL工具,主要用于抽取(Extraction)、转换(Transformation)、和装载(Loading)数据。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。在这种思想的设计下,Kettle广泛用于不同数据库之间的数据抽取,例如Mysql数据库的数据传到Oracle,Oracle数据库的数据传到Greenplum数据库。1.2.Kettle的安装Kettle工具是不需要安装的,直接网上下
2、载解压就可以运行了。不过它依赖于Java,需要本地有JDK环境,如果是安装4.2或5.4版本,JDK需要1.5以上的版本,推荐1.6或1.7的JDK。运行Kettle直接双击里面的批处理文件spoon.bat就行了,如图1.1所示:CENSEtt全llb.zote&tllLKtirDataIntegrfftiortaposncr.shREADME-CriiX.brticnpon.bdrR.EADME_M.txtImpon.shwi扁rmplm5.sliIIInbswtkltchen.siiset-pe*KdhSpOOfl.COmrnandSpOORpIcarteh%READMENFOBRJGh
3、iT.twtlaiwichersimpfe-jndCarte-.bAtPenWioDstakit&girAtlcn_O&t_LiCCfl&SLil.SpoorConEncr.batREADMEL1NUX.MKkchsnbijset-jwntaho-flrw-batPdnMSpoonDebug.bat:图1.12.Kettle脚本开发2.1.建立资源库(repository仓库)Repository仓库是用来存储所有kettle文件的文件系统,由于数据交换平台服务器管理kettle文件也是用Repository仓库,因此我们这边本地的kettle开发环境也是要用到该资源库。建立资源库的方式是工具
4、-资源库-连接资源库,这时候弹出一个窗口,我们点击右上角的+号,跟着点击下面的kettle选项,按确定,如图2.1所示:图2.1跟着在右上角选择一个目录,建议在kettle路径下新建repository文件夹,再选择这个文件夹作为根目录,名称和描述可以任意写,如图2.2所示:霸立栏建源库说詈根目录-ilesXpdi-oe-S.l.0.1-130data-integrationrepcsrtcry|浏览回|只读资源库孑Hidehiddenfoldersandfiles?图2.2建完后会kettle工具会自动连接到repository资源库,每次打开kettle也会弹出一个窗口让你先连接到资源库。
5、在连接到资源库的情况下打开文件就是资源库所在目录了,如图2.3所示。注意你在资源库建的目录结构要跟数据交换平台的目录结构一致,这样写好kettle脚本,保存后放的路径能跟交换平台的目录结构一致了。对MQ%1=畧称英型帙用吿境生变比的曰朗茵述V口sjcs口數富它空TQttffl口业药St丿口审在荒HiDE_MHPV_T.S1_DWJFDJXX匸于轴KJe_SJCSJV_TESTTBAINSFQh-JOR2Q17/Q4/121,2017/04/121莫豈造桎IS课.主旳寿图2.32.2.在目标数据库里新建表在做数据迁移的时候我们需要先在目标数据库建立与源数据库类似的表结构,才能在这两张表之间做数据
6、迁移,以oracle数据库到gp数据库,T_SF_DWJFDJXX_TEST表做数据迁移为例,我们先建类似的表结构,首先先把表结构的代码拷出来:createtableT_SF_DWJFDJXX_TEST(NSRNBMNUMBER(10)notnull,DWSBHVARCHAR2(18)notnull,JFDWNBMNUMBER(10)notnull,HYFL_DMCHAR(1)notnull,JFDWLX_DMCHAR(3)notnull,SBJC_DMCHAR(2)notnull,SBGLJG_DMVARCHAR2(11)notnull,SWGLJG_DMVARCHAR2(11)notnul
7、l,SBDJ_ZTCHAR(2)notnull,DJSLRY_DMVARCHAR2(11),DJSL_RQDATE,LRRY_DMVARCHAR2(11),XGRY_DMVARCHAR2(11),DJ_RQDATE,DJJG_DMVARCHAR2(11),LR_SJTIMESTAMP(6),XG_SJTIMESTAMP(6),ZDFY_BJCHAR(1),XMMCVARCHAR2(100),KNQYBZ_DMCHAR(1),ZDYCKJN_BJCHAR(1),SJJHPT_SJTIMESTAMP(6),SJJHPT_DZNUMBER(14);跟着在这个表结构的基础上,在目标数据库创建新表。需要
8、注意的是,gp数据库的数据类型有些跟oracle的一样,有些不同。相同的就不用改了,不同的就改下。以上面的数据类型为例,相同的有char、date、timestamp,不同的是varchar2和number,因此,varchar2(n)要改成varchar(n),number(n)要改成integer(注意不带数字长度n)。建完之后,我们就可以在这不同数据库的两张表之间进行数据迁移或数据定时传输。23源数据库和目标数据库的jndi设置Jndi是kettle连接数据库的配置文件,相当于oracle的tns。Jndi设置的目录是在kettle目录下的simple-jndi文件夹里,打开后编辑per
9、ties来设置jndi,下面附上公司揭阳涉税项目oracle到gp数据库的jndi设置,分别是源端oracle数据库和目标端gp数据库。配置信息的斜杠左边是jndi名,这里jndi的命名规则是数据库名_用户名,注意本地的jndi名要跟交换平台的jndi名一致。配置信息的斜杠右边分别是数据库类型、驱动、数据库地址、用户名和密码。注意,相同数据库配置写法相同,不同数据库的配置写法略有不同,像下面的oracle和gp数据库的driver和url地址写法就不一样。oracle_db_mhpt/type=javax.sql.DataSourceoracle_db_mhpt/driver=oracle.j
10、dbc.driver.OracleDriveroracle_db_mhpt/url=jdbc:oracle:thin:1:1521:zrmhdboracle_db_mhpt/user=db_mhptoracle_db_mhpt/password=DB_MHPTgp_public/type=javax.sql.DataSourcegp_public/driver=org.postgresql.Drivergp_public/url=jdbc:postgresql:/65:5432/postgresgp_public/database=8gp_public/user=gpadmingp_publi
11、c/password=gpadmin2.4.写kettle脚本Kettle脚本有两种,ktr脚本跟kjb脚本,其中ktr负责执行,具体要做什么由ktr来负责;kjb负责调度,调用一个或多个ktr。Ktr和kjb的关系类似于像员工和领导之间,员工负责具体的事务操作,领导负责计划安排工作。新建ktr脚本可以点击左上角的文件一新建-转换,新建kjb脚本就文件-新建作业。我们这里传输数据只要用到kjb脚本,一张表的数据传输要有1个脚本。首先先新建一个ktr文件,如图2.4所示,跟着我们按照主界面的提示拖动主键来操作。拖动组件在核心对象的组件库里。ACJ強Cj绕计n掐出口抑本口连按話Spoon-repo
12、sitDry转换1堂件耳g确执齐工具蛋助由日mh石、Drag&dropfromthe/designpaneltobegin.KTR_SJCS_J_TEST卩:(??换1;ICJRSJCS.JYTESTII口嚳I?爲耳冒100%-riInputriSfrA口彌口应用口BdServer口查问-匚J載据包险-rRigDataLlAgilein加看口Palo图2.4跟着我们需要4个组件,分别是获取变量、表输入、字符串操作、插入/更新,先从组件库里找到这些组件然后拖动到右边面板上,查找组件可以用组件名称来在组建的搜索框里搜索。拖动后如图2.5所示。图2.5然后给他们组件之间建立连接,用拉箭头来连接即可,
13、如图2.6所示:回養输入字待丰操作图2.6组件之间连接完之后,跟着双击组件一个个编辑。第一步是获取变量,在获取变量前首先要设置入参用来获取变量,设置变量先双击主对象树的ktr名(转换1是未保存文件到本地的默认名),跟着设置命名参数。如图2.7跟2.8所示。其中start_timestamp和end_timestamp这两个是数据交换平台服务器上默认的用于增量抽取数据的两个入参,分别表示数据开始时间跟数据结束时间。这里填上了默认值方便测试。测览器卜Steps(歩骤)!Hops(节点连接数据库分区丸hM匕子皈务虽口Kettleschen-Hadoopdustersr0主对最树x艺核心对彖飆銘翁e-
14、ms_銘鐵8W.fi|前time册psiartjine咖p2D17-02-01如征01图2.7图2.8设置入参后再编辑获取变量的组件,这里名称跟入参一样,kettle变量名的写法是$Variables,类型我们选择string,因为服务器上交换平台传进来的start_timestamp和end_timestamp参数也是string类型的,我们这里跟它一致。也如图2.9所示:步骤名称莪取变畐芋段:辛名称稻式长庭精1start_timest.$tart_timestampString2end_tim亡或日$end_;iinestampString图2.9第二步是表输入,首先要先连接数据库,之前我
15、们在本地文件上配置了jndi,这里jndi就用得上。新建或编辑数据库连接,选择好连接的数据库,还有jndi连接方式,再填上jndi名称和连接名称,设置完了就点击左下角的测试来测试本地能不能连上数据库。连上了我们才做其他的步骤。口软堀日至扌忘一瞬i&I连援辿隹接侶称:连空翼型;OracleoracIe_db_mhptJNDI-SNative(JDBQjOrmulmIR.DEPaloMOLARServerPostgreSQLRedshift图2.10连通好后,写好sql语句。这里sql语句用到变量,kettle变量的写法是$variables,而使用变量要在左右两端再加上单引号,变成variabl
16、es。注意数据库后台的日期类型是date,而变量是字符串类型,因此需要做个变量的类型转换。因为有使用变量,所以需要勾上“替换sql语句里的变量”单选框。设置好后可以预览下数据看下。行*?!128Help竝启库连绘oracle_to_date55lart_tinestenp?.YYlf-M-DDBEUQ.HI:55)占ffDtsjjhpt_sj佔to_date(1i(eacLtiMBtajip1.irTTY-MK-DDHB24:HI:SS1)图2.11第三步是字段去除左右空格,编辑“字符串操作”,点getfields获取从上个步骤表表输入获取的字段名,然后把trimtype全部选择both,意思
17、是去除字段左右两端的空格。如果getfields得到的字段有start_timestamp和end_timestamp这两个,这两个多余的,就删去。如下图所示:Stepname再InbtreamfL.Out-stre-iamf_Trimty.ILawer/LFp.PAddmgPadchdrPadLnL.InitCapE-5capeDigitsRc-mawe-Specialcha.1WSBHibothnonenonestownonenone2HVFL_DMbotilnoflenonetownonenoneJJFDWLX_DMbatiinonencrrt!Montnanis门口n皀4SBK_DMb
18、athnonencnsMonenciriisnani=5SBGUG_DMbadinonenoneNbrwnonenone&SliIITfi?E100%-图2.153.在数据交换平台设置定时任务以公司这边的数据交换平台为例(admin/admin),如果交换平台的jndi设置没有设置的话,那么要首先设置这样跑kettle脚本的话才能连到数据库,注意本地kettle的jndi名要跟交换平台的jndi名一致,需要统一命名。图3.1跟着将脚本放上服务器,可以在页面上上传文件到服务器。瓏e页伽题縫匿-记JNDIggg甲.WjEfMBg一.周岌平白状視查询_.处共斛張話过腔片置彎JND丁配丑占杀统存世一粘
19、觀能代咼狀护饗机构淮护_岗位仔类维护业务&关代码维护卜*于宜用審数握护-k丘淮护_.岗位推护机构职.能叩维护一羸机构岗社垂护港机枸岗世职能側樂护_于应用地址维护嗨功艳射维护机构岗世人员维护一雜鬲包维护程目录营艷密Eiivaiisjca救拥仓.年申目社保I-Q曲务农L啦事Lxq祝务彩(esiL黑teFsr11lTf=i定时如行隅圖自运行状态:砒目录Ifl1陳目录走时器若称重命售目录1上隹瘟程文件图3.2上传好后,需要先跑一回脚本跑成功才能设置定时调度,所以我们先运行一次。注意数据的起始时间(start_timestamp)默认是1970年,首次运行可以改下。数据的结束时间(end_timestamp)是当前的时间点。超目亲Etaji巴1-1唔KJCtl图3.3运行成功后,跟着再设定时任务,按要求设置调度频率蛊程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年河南省郑州市高新区事业单位联考招聘备考题库及答案详解(名校卷)
- 2026江苏无锡瀚澜水利科技有限公司招聘工作人员8人备考题库及参考答案详解一套
- 2026河南郑州华卓医院(荥阳二院)招聘54人备考题库及参考答案详解
- 2026中国联合网络通信有限公司淳安县分公司招聘25人备考题库附答案详解(能力提升)
- 2026广东佛山市第二人民医院服务中心招聘18人备考题库及答案详解(有一套)
- 2026陕西汉中镇巴县人民医院招聘15人备考题库及答案详解(真题汇编)
- 2026重庆建峰浩康化工有限公司招聘1人备考题库及一套参考答案详解
- 《猫和老鼠》教学设计
- 2026届四川省峨眉市第二中学校高三下学期3月月考历史试题(含答案)
- 电商平台运营与市场营销手册
- 2026四川成都成华区白莲池街道招聘四级社区工作者5人备考题库附答案详解(b卷)
- 2026年广东佛山市高三二模语文试卷试题(精校打印)
- 中核集团校招面试题及答案(2026版)
- GB 47372-2026移动电源安全技术规范
- 下肢动脉球囊扩张成形术后护理查房
- 2026年上半年成都市教育事业单位公开考试招聘中小学教师(1197人)考试参考试题及答案解析
- 仲利国际租赁在线测试答案
- 2026年公选乡镇领导班子成员(副科)试题及答案
- 2025年河南建筑职业技术学院单招职业技能考试题库附答案解析
- 珠宝行业会计财务制度
- 2025年江苏省苏州市中考一模数学试题(原卷版+解析版)
评论
0/150
提交评论