




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Kettle工具在实际中的一些应用说明这里我就kettle工具在实际当中的一些应用做一些简单的说明,关于kettle工具的各个选项说明请参照以下文档。一:资源库的设置Kettle提供了两种资源库的选择方式:数据库存放、本地文件存放。数据库该方式是通过数据库连接直接在数据库里面创建kettle表,表里面记录着你所做的任何保存过的记录以及转换和任务。此方法是远程存放的方式,具有可多人共享一个资源库的优势,但是也存在资源库不稳定的缺点。以下就数据库资源库具体怎么实现做一下介绍:第一:在tools选项下面有在资源库选项里面有连接资源库选项,点击之后会出现如下界面:刚开始的时候是没用任何连接的,需要根据自己的需要选择创建。笔:修改资源库连接加:添加新的资源库叉:删除选中资源库点那个加号图标就可以进入到新建选项页面:在中间的显示栏中:第一行代表着写入到数据库的资源库、第二行代表着保存到本地的资源库。点击第一行进入如下界面:点击新建按钮将会新建数据库连接,如果已经有你需要的数据库连接也可以选择你需要的。上面就是新建数据库页面,根据你的需要选择具体的数据库连接方式,填写好完成之后点击一下测试按钮,就可以知道数据库连接是否成功。到这里,资源库的连接已经做了一半了。接下来介绍另一半要做的事情。回到这个页面,填写唯一的ID、名称,然后点击创建或更新按钮,之后会出现一些SQL语句,执行这些语句,如果成功的话就创建成功了,如果失败则要检查一下数据库。最后点击确定按钮就成功了。这个时候就可以连接资源库了。选择你创建的资源库,admin用户的默认密码是admin ,点击OK就行了。本地接下来简单介绍一下本地资源库,其实是很简单的。选择第二行。将会看到如下页面:这个就是本地的页面,比数据库简单多了,选择一下存放路径,给它一个ID号和名称,点击OK就可以了。资源库建好之后就会进入到主页面了:这个就是主页面了,表面上是空空如也的。关于资源库的设置就就讲到这里了,关于更多的介绍请参照官方说明文档!二:实现增量更新的方法Kettle工具并没有提供增量更新的选项,这个是要根据你的策略来实现的。基本的策略是根据时间字段来做增量更新。接下来我们就如何根据时间字段做增量更新。要实现增量更新的前提必须是原表必须要有一个时间字段,然后目标表根据这个时间字段来做查询和更新。(具体思想请参照开源ETL工具之增量更新设计技巧文档)如图:我将一一解释一下各个选项的具体作用。第一个表输入:这个是要获取目标表要做增量更新的时间字段的最大值,这个值将会传递给下一个表输入。此查询必须要保证只能传送一个值。第二个表输入:这个就是对原表的查询,要注意SQL语句里面的where子句。Where子句里面的判断字段就是做增量更新的时间字段,值就是前面一个表输入传递过来的。此时判断的值要用?来代替,这两个选项要这样设置。表输出:这里就是要进行更新的目标表了,也就是第一个表输入的表。里面具体的一些选项请参照kettle工具说明手册。以上就是增量更新的实现方法。三:JOB定时的实现方法我们在实际应用当中往往要实现定时的功能,kettle提供了定时的功能,这个只能在任务里面实现定时的功能。见如下图:在JOB里面的start选项里面提供了定时机制,可以根据你的需求来选择你需要的定时类型这里要注意一下,要定时的时候一定要把重复的按钮给勾选上。这里是通过kettle提供的机制来进行定时的,另一种定时的机制是依靠写脚本语句来定时调用kettle脚本。(这种我们在后面会在脚本调用介绍到)四:kettle变量的设置与获取变量在kettle里面使用的比较频繁,这里我就做一下简单的介绍,具体的变量设置请根据实际情况来设置。我这里的案例是获取系统时间,然后分别设置四个变量,这四个变量分别代表着“年”、“月”、“日”、“时”。如下图:变量的相关选项在转换里面中的作业里面。我获取的是系统信息是:系统日期(关于这个选项请参看kettle手册)为了达到我之前的需求,我在这里运用了kettle另一个功能。中的javascript脚本选项。这个步骤是讲系统时间认为的分割为四个字段。这四个字段将会作为变量的值传递到下一个步骤。(关于这个选项请参看kettle手册)接下来就是到设置变量这个环节了。这里面可以设置多个变量,第一列是字段名称(是前面传过来的值),第二列是变量名(此后可以用变量名调用变量),第三是变量的活动类型(一般选择是作为全局变量)第四列是给变量设置默认值。以上就是变量设置的相关介绍,变量在使用之前必须先执行这个变量设置的转换,这样在后面才能实现对变量的调用。关于变量的获取,这个在选项中只要有这个标志的都是可以用变量的,变量的获取可以使用 CTRL+ALT+SPACE快捷键来选择你所需要的变量名。五:通过shell脚本调用kettle文件在部署有kettle工具的机器上可以通过写脚本文件来调用kettle文件,这样就能实现不打开kettle工具而后台实现kettle文件的运行。在kettle工具的文件下有这样两个文件一下就是我在linux系统下写的一个脚本调用的案例:#!/bin/sh. /etc/profilesh /sybase/data-integration/kitchen.sh -rep=111 -user=admin -pass=admin -job=EXCL -dir=/EXCL/ -level=basic/sybase/pdi/EXCLlog.txt 就关于几个参数做一下介绍。sh /sybase/data-integration/kitchen.sh 调用kettle文件下的kitchen.sh文件-rep=111 资源库ID-user=admin 资源库登陆用户-pass=admin 登陆密码-job=EXCL 调用JOB的名称-dir=/EXCL/ JOB的存放路径-level=basic/sybase/pdi/EXCLlog.txt kettle日志写入到文件中相关的一些参数的详细说明如下:Options: -rep = Repository name -user = Repository username -pass = Repository password -job = The name of the job to launch -dir = The directory (dont forget the leading /) -file = The filename (Job XML) to launch -level = The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing) -logfile = The logging file to write to -listdir = List the directories in the repository -listjobs = List the jobs in the specified directory -listrep = List the available repositories -norep = Do not log into the repository -version = show the version, revision and build date -param = Set a named parameter =. For example -param:FOO=bar -listparam = List information concerning the defined parameters in the specified job. -export = Exports all linked resources of the specified job. The argument is the name of a ZIP file. -maxloglines = The maximum number of log lines that are kept internally by Kettle. Set to 0 to keep all rows (default) -maxlogtimeout = The maximum age (in minutes) of a log line while being kept internally by Kettle. Set to 0 to keep all rows indefinitely (default)在linux系统中可以使用crontab命令来做定时,下面就简单介绍一下这个命令。crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。crontab命令有三种形式的命令行结构:crontab -u user filecrontab -u user -e|-l|-rcrontab -l -u -e|-l|-r 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab;命令行中-l选项的作用是显示用户crontab文件的内容。使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。执行命令crontab -u user -r即可删除当前用户的所有的cron作业。作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。第一道第五个字段的整数取值范围及意义是:059 表示分123 表示小时131 表示日112 表示月份06 表示星期(其中0表示星期日)/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。 第1列分钟159 第2列小时123(0表示子夜) 第3列日131 第4列月112 第5列星期06(0表示星期天) 第6列要运行的命令下面是crontab的格式: 分 时 日 月 星期 要运行的命令这里有crontab文件条目的一些例子:30 21 * * * /usr/local/apache/bin/apachectl restart 上面的例子表示每晚的21:30重启apache。45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart 上面的例子表示每月1、10、22日的4 : 45重启apache。10 1 * * 6,0 /usr/local/apache/bin/apachectl restart 上面的例子表示每周六、周日的1 : 10重启apache。0,30 18-23 * * * /usr/local/apache/bin/apachectl restart 上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。0 23 * * 6 /usr/local/apache/bin/apachectl restart 上面的例子表示每星期六的11 : 00 pm重启apache。* */1 * * * /usr/local/apache/bin/apachectl restart 每一小时重启apache* 23-7/1 * * * /usr/local/apache/bin/apachectl restart 晚上11点到早上7点之间,每隔一小时重启apache0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart 每月的4号与每周一到周三的11点重启apache0 4 1 jan * /usr/local/apache/bin/apachectl restart 一月一号的4点重启apache以上就是一些在实际应用中常用的一些技巧,接下来我们就根据具体的实例来做具体的分析和讲解。六:实例讲解1从FTP服务器上下载文件这个是JOB实现的是每隔一个小时从FTP服务器上下载当前时段的一个文件。此JOB要实现的核心在于时间变量的设置,同时还需要根据你要下载的文件编写相应的正则表达式。首先我们来看变量是如何设置的:第一:获取使用获取系统信息选项,此选项在装换当中的输入文件夹下面。打开此选项我们可以看到有如下一些选择:这里根据我们的需求选择“系统日期(可变)”,这个是第一步,接下来就要使用到另一个重要的选项“javascript”。第二:javascript选项来提取我们需要的时间格式这里我们是要分别提取系统时间的“年”、“月”、“日”、“时”四个时段的值。这个选项提供一些相应的方法来实现这个功能,我使用的是date2str(var,var)方法,此方法的说明如下:var dValue = new Date();Alert(date2str(dValue);Alert(date2str(dValue,dd.MM.yyyy);Alert(date2str(dValue,dd.MM.yyyy HH:mm:ss);Alert(date2str(dValue,E.MMM.yyyy,DE);Alert(date2str(dValue,dd.MM.yyyy HH:mm:ss,EN);Alert(date2str(dValue,dd.MM.yyyy HH:mm:ss,EN, EST);这个是选项中现成提供的一个,里面还有很多。这里不单可以使用选项本身带有的,还可以自己编写相应的javascript脚本语句。以下就我获取不同时段的代码:years=date2str(sysdate,yyyy);mons=date2str(sysdate,MM);days=date2str(sysdate,dd);hous=date2str(sysdate,HH);这里一共有四个字段,这意味我们在后面要分别设置四个变量。好,接下来就让我们来看看最后一步:变量的设置第三:变量设置如图:我设置了四个变量:分别是“年”、“月”、“日”、“时”,全部设置为全局变量。好,到这里我们的定时下载FTP已经完成了第一步,这个为什么要设置四个变量呢?接下来就会知道了。然后就是FTP选项的相关设置如图:第一个页面是填写相关的FTP服务的信息。填写正确之后有个“TEST CONNECTION”按钮可以测试服务器是否连接成功。在看下面有一个控制编码选项,这个选项是选择相应的文件编码格式,特别是文件在不同系统之间传输最容易导致乱码问题。这里手动指定相应的编码格式可以有效避免乱码问题。第二个页面如下:这里有两点需要注意一下,第一就是通配符选项。此选项是用来写相应的正则表达式来提取相应的文件。我们之前设置的变量也就是在这里使用。我下载的是EXCL文件,文件名格式“广东电信C网拨测系统-服务质量支撑及管理系统-指标数据(2011年11月25日12点)”。我们要实现动态提取当前文件就得根据文件名当中哪些是变化的,这里明显可以看出文件名当中的时间是变化的,但是此时间不是标准的时间格式,所以我们使用了四个变量也就是如此了。相应的正则表达式如下:.*($years.*$mons.*$days.*$hous.*).xls另一个需要注意的地方就是:此选项可以实现相应的文件操作,比如跳过、覆盖等等一些。以上就是从FTP服务器下载的整个JOB 的流程,这个根据自己的需求还可以做很多变化,具体的有哪些变化,就交给大家去实践中体验了。2从EXCL文件读取数据入库上次我们讲到了从FTP下载文件,这次我们了解一下我们如何将EXCL文件导入到数据库当中。Kettle工具提供了一个选项,此选项的功能是把excl文件的数据提取出来。在使用这个选项的时候,必须EXCL文件格式是标准的表模式。(表模式头一行是字段名,下面是数据行。)我们就来看看详细的配置:第一个页面大体就是这样一些,要注意的地方就是写文件通配符那里。这里可以写相关的正则表达式来提取你想要的特定文件以及使用变量。第二个页面就是工作表,这里面选取excl文件中你需要的工作表。这里可以设定你要的起始行和起始列。第三个页面是内容:这里可以设定相关的编码格式和一些选项。比如是否需要头部一行。第四个页面是错误处理,这个才平常中很少使用。第五个就是字段:这个按钮可以实现获取头部的字段名,当然你也可以自己写字段名以及修改字段类型和大小。以上就是EXCL选项的相关信息,这个我把数据提取出来了,就可以做相关的处理了。接下来我们就把数据入库。数据库入库我们选用的选项就是表输入:要注意的就是这个选项,此选项选上就可以使用页面下的这个两个功能。此功能是获取前面的步骤传入的字段,然后与数据库表里面的字段相配对。这里还要注意一点的就是如果你要导入数据的表不存在的话,你可以点击页面下面的SQL按钮。如果表结构也有修改的话也可以点击SQL按钮来达到修改表结构的目的。当然也可以自己在那个SQL框写相应的SQL语句。如下:还有一点需要注意的,就是如果在导入数据之前需要把原表的数据清空的话可以勾选上这个按钮,这样在每次导入数据之前都会清空原表数据的。以上就是从EXCL文件读取数据入库的基本信息,中间可以添加其他的一些操作,这个根据具体的需求来做相应的处理。3从文本文件抽取数据入库大体步骤如图:这里我中间加了一个字段选择步骤,此步骤也是在实际应用当中经常会用到的一个选项。我们先来看看文本文件输入选项的相关页面。这个跟EXCL文件输入差不多,具体要注意的地方就是第二个页面。在内容页面需要注意一下几点:分隔符、格式、编码方式。特别是在linux下面使用的时候一定要记得选择linux相对应的格式和编码方式。我推荐使用的编码方式是GB2312。分隔符则是对要跟文本文件的分隔符一致,如果不一致的话则会导致数据无法正确的读取。格式是根据你使用的操作系统来决定使用什么格式。我们要重点讲的是字段选择这个选项的使用。主要页面如图:有选择和修改、移除、元数据三个页面。选择和删除页面主要实现对字段名的修改和选择。移除页面主要实现对相关字段在数据流中的移除。元数据页面则功能稍微多一些,如图:也是实现对字段类型的修改和重命名。表输出就不重复了,这个和之前差不多的。以上就是从文本文件抽取数据入库的相关说明。4从oracle数据库到sybase数据库最基本的就是如下步骤:从数据库到数据库最基本只要两个步骤就可以实现了。表输入与表输出。表输入:关于表输入的具体说明之前已经介绍过,这里就不多讲了。从oracle数据库到sybase数据库遇到的最大的问题就是字段类型不符。特别是特殊字符的处理,有可能在oracle数据库里面是可读的,但是在sybase数据库里面就是不可读的,此时中间就需要额外的步骤来对出问题的字段进行处理。常用到的处理主要有以下一些:经常用到的主要有:、等等一些。具体的根据具体需求选择相适应的选项。各个相关选项的具体说明请参考“智能数据比对系统ELT平台操作手册V1.0”。5 kettle集群服务的使用。这里就简单的介绍一下集群。相关的一些说明请参考一下两个文件: 6通过JOB调用linux shell脚本这个JOB只有两个步骤,就是直接使用shell选项来调用linux下的shell脚本。具体的设置如图:如果你的shell脚本需要传入参数则在下面的参数框里面填写相应的参数,当然参数也可以有前面的步骤传入进来。如果你不调用脚本,想自己写相关的脚本则勾选上:这样一来你就可以在页面进行脚本的编写。7如何实现JOB里面的并发执行JOB里面默认的是串行执行,就是先执行完一个步骤,在执行下一个步骤。此方法在某些时候是可用的,但是某些情况是需要多个步骤并发执行的,这个时候就需要设置START选项的相关配置。如图:将那个Lanuch.那个选项给勾选上就可以实现并发执行了。8将转换或JOB日志写入数据库Kettle工具提供了日志功能,此功能可以将转换或JOB的相关信息记入到数据库表中。转换和JOB的日志类型不一样,我们就来一一介绍一下。转换日志的相关配置在这里,如图:点击设置就可以进入到如下页面:可以看到转换有四种类型的日志:Transformation 、Setp、Performance、Logging Channels以下就是这四种日志字段的相关说明:Transformation:Setp:Performance:Logging Channels:JOB的日志类型有这几种类型:Job、Job Entry、Logging ChannelsJobJob Entry:Logging Channels:将这些日志写入到数据库只需两步就可以完成,一是选择一个数据库连接,二是给日志表一个名字。最后就是点击SQL按钮,这样在数据库里面就创建了相应的日志表,以后每运行一次都会在日志表记录一行数据。9使用SQL脚本选项执行相关SQL语句上面这个JOB实现的功能是在调用shell脚本之前先把相关表的数据清空,然后在执行shell脚本填充数据。我们就来介绍一个SQL选项的使用方法,如图:从上图我们可以看出这个选项的重点就是SQL语句的编写。这个不单可以自己编写相应的SQL语句也可以把SQL语句写入到文件,然后再调用文件。在SQL脚本编写框中也是同样可以使用变量。以上就是一些在实际应用中用到的技术,希望能给大家带来一点点帮助,当然这个文档还有很多不足和欠缺的地方,最后我就把以上的技术结合的JOB截图给大家参考一下。10实例样本全量更新:这两JOB都是实现全量更新。根据数据量的不同来采用不同的方法,数据量不多可以采用第一种,数据量较大可以采用第二种(编写相关的抽数脚本)增量更新:这个也是根据数据量的不同来采用不同的方法。从FTP下载EXCL文件入库:第一步:第二步:第三步:第四步:第五步:第六步:最后一步是一个总的JOB,这里面嵌套了很多个JOB。主要是一个FTP下载JOB,另一个是EXCL文件入库JOB。FTP的JOB里面又嵌套了一个设置变量的转换和FTP下载JOB。EXCL入库的JOB里面嵌套了两个相关的转换。以上都是在实际应用中使用到的。最后介绍一下相关的抽数脚本已经sybase数据库的bcp使用方法。抽数脚本:. /home/sybase/.bash_profileROADDATA=/sqms/file/crm/txtT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宝鸡先行电力(集团)有限责任公司招聘(4人)模拟试卷及答案详解1套
- 2025广西南宁上林县禁毒委员会招聘禁毒社工1人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025广西防城港市中小学教师招聘501人模拟试卷及答案详解(典优)
- 2025湖北省三支一扶招募高校毕业生2000人考前自测高频考点模拟试题及答案详解(必刷)
- 2025内蒙古赤峰市林西金城医院招录专业技术人员6人考前自测高频考点模拟试题及答案详解(易错题)
- 律师常用信涵样式相互同意解除合同7篇
- 库房搬迁运输合同9篇
- 科研伦理考试题库及答案
- 甘肃消防考试题库及答案
- 绿色环保与可持续发展行动计划活动方案
- 免疫复合物沉积-洞察及研究
- 第4节 跨学科实践:电路创新设计展示-教科版九年级《物理》上册教学课件
- 产科危重患者的护理
- 网约车驾驶员安全驾驶培训
- DGTJ08-2310-2019 外墙外保温系统修复技术标准
- 办理出国商务代办手续服务合同
- 光电美容培训课件
- 电能质量培训课件
- 中国服饰课件模板
- 子痫及子痫前期病例分析
- 啤酒音乐节活动方案
评论
0/150
提交评论