




免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1.1 kettle工具的优势21.1.1 kettle开源、高效21.1.2 kettle 非常强大而且易于使用的设计界面21.1.3 有非常强大而且众多的使用群体,应用广泛21.1.4 可用java进行集成开发21.2 kettle工具使用介绍31.2.1 资源库连接31.2.2 创建转换(transformation)或工作(job)31.2.3 数据库连接 数据抽取 数据转换61.2.5 其他转换数据功能61.3 Java应用程序中集成Kettle91.3.1 java程序分析91.3.2代码演示12数据抽取之kettle工具1.1 kettle工具的优势1.1.1 kettle开源、高效Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,数据抽取高效稳定。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。1.1.2 kettle 非常强大而且易于使用的设计界面1.1.3 有非常强大而且众多的使用群体,应用广泛1.1.4 可用java进行集成开发提供了基于JAVA的脚步编写功能,可以灵活地自定义ETL过程,使自行定制、批量处理等成为可能,这才是一个程序员需要做的工作,而不仅是象使用Word一样操作kettle用户界面。1.2 kettle工具使用介绍1.2.1 资源库连接kettle 有两种方式连接资源库:一种是纯数据库式,也就是你所有的转换全部都保存在一个数据库中,一般你在开始使用kettle的时候,它都会要求你建立一个资源 仓库,这个资源仓库的连接方式就是你的数据库连接,你需要能够有相应的数据库驱动和对应的连接用户名和密码。另外一种连接方式是使用文本文件,也就是 xml文件,在做完任何转换之后,我们都可以把转换或者Job变成xml文件输出,这个输出文件包含你所有转换的全部信息。1.2.2 创建转换(transformation)或工作(job) 以文本文件连接方式时,新建转换或工作,可将其保存为.Ktr或.Kjb格式,也就是xml文件;1.2.3 数据库连接使用kettle进行数据抽取和转换之前必须连接数据库,你可以同时创建几种不同的数据库连接,如:Oracle、sql server、MySQL 等。1.2.4 介绍两个例子 数据抽取要求:将数据库中交易表和账户表的数据合并并输出到文本文件中,并将这个文本文件导入到数据库的另一张表中。首先,第一步要先创建一个新transformation,再创建数据库连接;第二步从输入中找到【表输入】,拖到主窗口释放鼠标。接下来双击表输入写查询语句;第三步点击查询,选中【数据库查询】,拖到主窗口释放鼠标。按住shift键,用鼠标点中表输入与数据库查询进行连接;第四步双击【数据库查询】,可在查询表中写入另一表的名字,并可以在表字段中写入相关字符进行比较;在查询表返回值中填入需要返回的字段;接下来第五步是找到【过滤记录】和【Scripting】方法同上,双击打开过滤记录,在里面进行字段选择,并在中键入1值。可双击【scripting】,在里面写入javascript脚步语句;如:然后再找到【增加常量】,拖到主窗口释放鼠标,并对其进行连接;双击【增加常量】,名称写入value,类型选择string,值写入“这是一笔对公客户发生的交易”,确定保存。最后找到【文本文件输出】,对其连接,并将文件名称写入电脑路径;注意在【文本文件输出】中的字段中,点击获取字段,可自动获得;点击保存,然后点击运行可进行转换。整个结构图如下:得到的结果:number;tradename;tradedate;number_1;name;password;money_cn;value 1;aheadsoft;20090506; 1;aheadsoft;aheadsoft;privat;这是一笔对私交易 2;aheadsoft;20090507; 2;aheadsoft;aheadsoft;public;这是一笔对公交易然后可将此文本文件导入到数据库中,方法类似;得到的结果: 数据转换要求:实现从两种不同数据库中抽取数据,并将其合并转换到另一数据库的表中。操作步骤与上类似,只是在数据库连接中需多创建一次与另一数据库的连接;设计图如下:得到的结果:1.2.5 其他转换数据功能转换数据库中的信息表到xml1:创建数据库的连接2:拖拉出输入表和xml输出3:注入输入表中的信息,与sql语句4:执行sql语句5:执行.转换xml信息到数据库的表1:创建数据库的连接2:拖拉出xml输入和输出表3:添加xml路径- * 进入内容,设置位置,-进入字段,获取字段,注意:获取的字段在表中的状态,可以删掉的空列4:注入输出表中的信息5:执行sql语句注:设置位置很重要!否则会报元素重复路径在转换xml到xml1:创建数据库的连接2:拖拉出xml输入和xml输出3:添加xml路径-进入内容,设置位置,-进入字段,获取字段,注意:获取的字段在表中的状态,可以删掉的空列4:执行注:设置位置很重要!否则会报元素重复路径在转换数据库中的信息到access1:创建数据库的连接2:拖拉出输入表和输出access3:注入输入表中的信息,与sql语句4:注入输出access中的信息 注意:access中创建数据库和创建表就是在输入数据库名和表名后选中对应下面的create项5:执行sql语句6:执行转换转换access数据库中表中的信息到其他数据库中1:创建数据库的连接2:拖拉出access输入和输出表3:注入输入表中的信息,与sql语句4:注入access输出中的信息,输入access数据库路径,-content 输入该数据库中的表名 - field 获取表中的信息5:执行sql语句6:执行转换还有类似的其他功能,如:CSV、Cube、XBase、文本文件输入、web services及其他查询、脚本命令等其他功能。1.3 Java应用程序中集成Kettle1.3.1 java程序分析如果你需要在自己的Java应用程序中集成Kettle , 一般来说有两种应用需求;一种是通过纯设计器来设计ETL转换任务,然后保存成某种格式,比如xml或者在数据库中都可以,然后自己调用程序解析这个格式,执行这种转换,是比较抽象的一种执行方式,ETL里面转换了什么东西我们并不关心,只关心它有没有正常执行。另一种是通过完全编程的方式来实现,详细 的控制每一个步骤,需要知道转换执行的成功与否,这种方式可能需要更多的理解kettle的API 以便更好的跟你的应用程序紧密结合,不过难度也比较大,可以很好的定制你的应用程序,代价自然是入门门槛比较高。本文主要向你解释第一种Kettle的集 成方式,文中所列出的代码节选自pentaho ,不过应用程序本身跟pentaho 没有什么关系。 Pentaho 集成kettle的代码主要是两个类,KettleSystemListener和 KettleComponent;看名字就猜出KettleSystemListener 主要是起监听器的作用,它主要负责初始化kettle的一些环境变量,这个类主要包含四个方法: startup() , readProperties(),environmentInit(),shutdown(),程序入口自然是startup()方法,然后它会调用 environmentInit() 方法,这个方法就调用readProperties()方法读一个配置文件perties,这个文件主要记录者kettle运行时可以调用的一些环境变量, readProperties()方法读完这个文件之后就把里面的键值对转换成变量传给kettle运行环境.当kettle运行完了之后就调用 shutdown()方法结束转换. 介绍重点类:KettleComponent KettleComponent的方法主要有三种类型,一类是用来初始化工作,做一些验证工作,第二类是执行转换的方法,也是主要需要讨论的方法,第三类是取得数据结果的,有时候你需要得到转换的结果交给下一个步骤处理.执行转换当读完了这些配置文件并且验证了之后,KettleComponent就开始把前面读到的转换文件或者资源库类型变成Kettle的API,这主要是在executeAction()方法里面进行,它当然根据连接方式也分两种执行类型:1. 文本执行方式2. 资源库连接方式文本执行方式需要接受一个你指定的运行转换的文件或者Job的文件,然后把这个xml文件解析成Kettle能够执行的模式,根据执行的类型又可以分成两种:1. Trans任务2. Job任务两个执行的逻辑差不多,下面先介绍Trans的执行方式:执行Trans任务transMeta = new TransMeta(fileAddress, repository, true); transMeta.setFilename(fileAddress);然后它会调用:executeTransformation(TransMeta transMeta, LogWriter logWriter)这个方法是真正的把前面的来的transMeta转换成trans对象连接资源库连接资源库使用的是connectToRepository() 方法,先取得RepositoriesMeta对象,然后根据你在setting.xml文件里面定义的repository的名字来连接对应的 repository.理论上来说我们一般都只使用一个repository ,但如果在产品中需要使用多个repository的话,你需要自己配置多个repository的名字和对应的用户名和密码。从资源库读取Trans连接到资源库之后自然是想办法读取数据库的表,把里面的记录转换成为Trans 对象,使用的是loadTransformFromRepository,这个方法的函数原型需要解释一下:TransMetaloadTransformFromRepository(String directoryName, String transformationName, Repository repository,LogWriter logWriter)第一个参数String directoryName 代表是你储存转换的目录,当你使用kettle 图形界面的时候,点击repository菜单的explorer repository , 你会发现你所有的东西都是存储在一个虚拟的类似与目录结构的地方,其中包括database connections , transformations , job , users 等,所以你需要的是指定你连接的目录位置,你也可以在目录里面再创建目录。String transformationName 自然指的就是你转换的名字.Repository repository 指的是你连接的资源库。LogWriter logWriter 指定你的日志输出,这个log 指的是你kettle 转换的日志输出,不是应用程序本身的输出。从资源库读取Job跟Trans 的步骤基本是一样的,同样需要指定你存储Job的目录位置.1.3.2代码演示注:此简化代码为以文本文件连接方式时的转换数据方式;public static void runTransformation(String filename) try StepLoader.init(); EnvUtil.environmentInit(); TransMeta transMeta = new TransMeta(filename); Trans trans = new Trans(transMeta); trans.execute(null); / You can pas
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 季节养生药膳熬粥手法调理效果保健手册
- 中国邮政2025朝阳市秋招网点柜员岗位面试模拟题及答案
- 中国邮政2025泸州市秋招供应链解决方案岗位高频笔试题库含答案
- 中国邮政2025株洲市秋招社区团购运营岗位面试模拟题及答案
- 2025年臭氧检测仪行业研究报告及未来行业发展趋势预测
- 西宁市烟草公司2025秋招财务管理岗位高频笔试题库含答案
- 二叉搜索树中插入与删除操作详解
- 梦想成真的神奇秘籍你一定要知道
- 化学危险品安全规定
- 石嘴山市烟草公司2025秋招软件开发岗位高频笔试题库含答案
- 第一课 踏上强国之路 公开课一等奖创新教案 统编版道德与法治九年级上册
- 2025年中级注册安全工程师《金属非金属矿山安全实务》考试真题及答案
- 2025年职业卫生标准试题及答案
- 股骨干骨折护理查房
- 小学语文 以学生为主体的课堂学习活动设计
- a-valediction-forbidding-mourning告别辞莫悲伤
- 药品专业知识与技能培训
- 北京京剧院劳动合同制职工招考聘用模拟卷含答案
- 苏教版二下《折彩粽》教学设计
- 精选艾森克人格问卷测试成人版和少年版计分方式
- 《作用于肾上腺素受体的药物》精品PPT
评论
0/150
提交评论