- 苏萦
-
1. 变量的类型
Kettle 的早期版本中的变量只有系统环境变量
目前版本中(3.1) 变量包括系统环境变量, "Kettle变量" 和内部变量三种系统环境变量的影响范围很广,凡是在一个 JVM下运行的线程都受其影响.Kettle 变量限制了变量的作用范围, 变量范围包括三种分别是 grand-parent job, parent job, root job 内部变量: 是 kettle 内置的一些变量, 主要是kettle 运行时依赖的环境, 如转换文件名称, 转换路径,ip地址, kettle 版本号等等.2. 变量的设置
"系统环境变量" 有三种设置方式
1) 通过命令行 -D 参数
2) 属性文件 kettle.property 中设置, 该属性文件位于 ${user.home}.kettle 下
3) 通过设置环境变量步骤 (Set Variable) 设置."Kettle 变量" 只能通过设置环境变量 (Set Variable) 步骤设置,同时设置变量的作用范围.
"内部变量" 是预置的无须设置.3. 变量的使用
无论哪种类型的变量在使用上都是一样的, 有两种方式
1) 通过 %%var%% 或 ${var} 来引用, 这个引用可以用在 SQL 语句中, 也可以用在允许变量输入的输入框里.
2) 通过获取变量 (Get Variable) 步骤来使用命令行参数:
1. 设置: 命令行参数通过获取系统信息(Get System Info) 步骤设置, 在使用时可以像列名一样来使用,不必像变量一样要通过 ${var} 这样的格式引用. 用户最多可以设置10个命令行参数
2. 传递: 命令行下使用 pan /file:xxx.ktr arg1 arg2 来传递参数.图形界面下,每次运行时有要求输入参数的提示窗口.
- 有三种设置方式: 1、通过命令行-D参数。 2、属性文件kettle.property中设置,该属性文件位于${user.home}.kettle下。 3、通过设置环境变量步骤(SetVariable)设置。 注意: "Kettle变量"只能通过设置环境变量(SetVariable)步骤设置,同时设置变量的作用范围。 "内部变量"是预置的无须设置。2023-06-09 18:06:111
Kettle中的转换里面的设置变量的作用是什么
方便你在之后或者子项目中获取到你设置的变量。比如你在这里设置了一个变量名叫FIELD,你在之后的转换“表输入”控件里SQL可以这么写设置变量大多用在在循环或者某个字段容易变化的时候,方便之后取到这个值谢谢采纳2023-06-09 18:06:181
Kettle如何使用自定义变量
首先你需要设置变量,假设有一个字段ID,你将它设置变量命名为field,之后你可以在例如“表输入控件”中使用这个变量谢谢采纳2023-06-09 18:06:301
kettle里怎么引用变量
要使用从上一步传来的参数,只要在使用SQL进行引用就可以。ps:对应的拓扑结构:ETL:是“Extract、 Transform 、Load”的缩写,也就是代表ETL过程的三个最主要步骤:“抽取、转换、装载”,但我们平时往往简称其为数据抽取。Kettle:是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。2023-06-09 18:06:481
kettle动态变量设置
kettle变量类型 kettle变量分为: 1.环境变量 通过set variables组件设置变量,范围可以是:JVM变量、作业变量、父作业变量、根作业变量。2023-06-09 18:07:031
kettle 怎样从转换中过的job中定义的变量
首先建立转换:从数据库表到日志表输入的设置:日志设置:新建job:转换选择刚才建好的输出日志转换。变量设置如下:此ID就是转换中的${ID},执行job,可以看到控制台输出日志结果:黑色字体部分中只写出了id=1的一条记录。最后补充,将转换的日志写到数据库中:打开转换>ctrl+t>日志选项卡>转换>点击下面的SQL,执行SQL建表。执行完job会在数据库中写入日志记录。2023-06-09 18:07:101
Kettle8.2下设置自定义SQL中多时间变量参数
kettle下使用SQL语句时经常会限定时间进行取数,每次改动就比较麻烦,可通过引用变量参数的方式自动引用,方便使用. 一.新建转换,获取各种想要的变量参数: 1.<获取系统信息>:通过控件获取到所需要的时间参数 2.<增加常量>:通过控件可以设置想要获得天数的差值 二.测试 1.新建转换,然后在表输入阶段使用参数,切记需要勾上"替换SQL语句里的变量",且变量名需要设置为上面步骤4中显示的变量名2023-06-09 18:07:171
kettle设置了一个变量,执行第一次的时候提示出现不支持的sql92,然后再运行一次job变量就正常使用了
1. Join我得到A 数据流(不管是基于文件或数据库),A包含field1 , field2 , field3 字段,然后我还有一个B数据流,B包含field4 , field5 , field6 , 我现在想把它们 ‘加" 起来, 应该怎么样做.这是新手最容易犯错的一个地方,A数据流跟B数据流能够Join,肯定是它们包含join key ,join key 可以是一个字段也可以是多个字段。如果两个数据流没有join key ,那么它们就是在做笛卡尔积,一般很少会这样。比如你现在需要列出一个员工的姓名和他所在部门的姓名,如果这是在同一个数据库,大家都知道会在一个sql 里面加上where 限定条件,但是如果员工表和部门表在两个不同的数据流里面,尤其是数据源的来源是多个数据库的情况,我们一般是要使用Database Join 操作,然后用两个database table input 来表示输入流,一个输入是部门表的姓名,另一个是员工表的姓名,然后我们认为这两个表就可以 ”Join” 了,我们需要的输出的确是这两个字段,但是这两个字段的输出并不代表只需要这两个字段的输入,它们之间肯定是需要一个约束关系存在的。另外,无论是在做 Join , Merge , Update , Delete 这些常规操作的时候,都是先需要做一个compare 操作的,这个compare 操作都是针对compare key 的,无论两个表结构是不是一样的,比如employee 表和department 表,它们比较的依据就是employee 的外键department_id , 没有这个compare key 这两个表是不可能连接的起来的.. 对于两个表可能还有人知道是直接sql 来做连接,如果是多个输入数据源,然后是三个表,有人就开始迷茫了,A表一个字段,B表一个字段,C表一个字段,然后就连Join操作都没有,直接 database table output , 然后开始报错,报完错就到处找高手问,他们的数据库原理老师已经在吐血了。如果是三个表连接,一个sql 不能搞定,就需要先两个表两个表的连接,通过两次compare key 连接之后得到你的输出,记住,你的输出并不能代表你的输入. 下面总结一下:1. 单数据源输入,直接用sql 做连接2. 多数据源输入,(可能是文本或是两个以上源数据库),用database join 操作.3. 三个表以上的多字段输出.2. Kettle的数据库连接模式Kettle的数据库连接是一个步骤里面控制一个单数据库连接,所以kettle的连接有数据库连接池,你可以在指定的数据库连接里面指定一开始连接池里面放多少个数据库连接,在创建数据库连接的时候就有Pooling 选项卡,里面可以指定最大连接数和初始连接数,这可以一定程度上提高速度.3. transaction我想在步骤A执行一个操作(更新或者插入),然后在经过若干个步骤之后,如果我发现某一个条件成立,我就提交所有的操作,如果失败,我就回滚,kettle提供这种事务性的操作吗?Kettle 里面是没有所谓事务的概念的,每个步骤都是自己管理自己的连接的,在这个步骤开始的时候打开数据库连接,在结束的时候关闭数据库连接,一个步骤是肯定不会跨session的(数据库里面的session), 另外,由于kettle是并行执行的,所以不可能把一个数据库连接打开很长时间不放,这样可能会造成锁出现,虽然不一定是死锁,但是对性能还是影响太大了。ETL中的事务对性能影响也很大,所以不应该设计一种依赖与事务方式的ETL执行顺序,毕竟这不是OLTP,因为你可能一次需要提交的数据量是几百 GB都有可能,任何一种数据库维持一个几百GB的回滚段性能都是会不大幅下降的.4. 我真的需要transaction 但又不想要一个很复杂的设计,能不能提供一个简单一点的方式Kettle 在3.0.2GA版中将推出一种新功能,在一个table output 步骤中有一个Miscellaneous 选项卡,其中有一个Use unique connections 的选项,如果你选中的话就可以得到一个transaction 的简单版,由于是使用的单数据库连接,所以可以有错误的时候回滚事务,不过要提醒一点是这种方式是以牺牲非常大的性能为前提条件的,对于太大的数据量是不适合的(个人仍然不建议使用这种方式)5. temporary 表如何使用我要在ETL过程中创建一个中间表,当某个条件成立的时候,我要把中间表的数据进行转换,当另一条件成立的时候我要对中间表进行另一个操作,我想使用数据库的临时表来操作,应该用什么步骤。首先从temp 表的生命周期来分,temp分为事务临时表和会话临时表,前面已经解释过了,kettle是没有所谓事务的概念的,所以自然也没有所谓的事务临时表。 Kettle的每个步骤管理自己的数据库连接,连接一结束,kettle也就自然丢掉了这个连接的session 的handler , 没有办法可以在其他步骤拿回这个session 的handler , 所以也就不能使用所谓的会话临时表,当你尝试再开一个连接的时候,你可以连上这个临时表,但是你想要的临时表里面的数据都已经是空的(数据不一定被清除了,但是你连不上了),所以不要设计一个需要使用临时表的转换之所以会使用临时表,其实跟需要 ”事务” 特性有一点类似,都是希望在ETL过程中提供一种缓冲。临时表很多时候都不是某一个源表的全部数据的镜像,很多时候临时表都是很小一部分结果集,可能经过了某种计算过程,你需要临时表无非是基于下面三个特性:1. 表结构固定,用一个固定的表来接受一部分数据。2. 每次连接的时候里面没有数据。你希望它接受数据,但是不保存,每次都好像执行了truncate table 操作一样3. 不同的时候连接临时表用同一个名字,你不想使用多个连接的时候用类似与temp1 , temp2 , temp3 , temp4 这种名字,应为它们表结构一样。既然临时表不能用,应该如何设计ETL过程呢?(可以用某种诡异的操作搞出临时表,不过不建议这样做罢了)如果你的ETL过程比较的单线程性,也就是你清楚的知道同一时间只有一个这样的表需要,你可以创建一个普通的表,每次连接的时候都执行truncate 操作,不论是通过table output 的truncate table 选项,还是通过手工执行truncate table sql 语句(在execute sql script 步骤)都可以达到目的(基于上面的1,2 特性)如果你的ETL操作比较的多线程性,同一时间可能需要多个表结构一样并且里面都是为空的表(基于上面1,2,3特性),你可以创建一个 “字符串+序列” 的模式,每次需要的时候,就创建这样的表,用完之后就删除,因为你自己不一定知道你需要多少个这种类型的表,所以删除会比truncate 好一些。下面举个例子怎么创建这种表:你可以使用某种约定的表名比如department_temp 作为department 的临时表。或者把argument 传到表名,使用 department_${argument} 的语法,如果你需要多个这种表,使用一个sequence 操作+execute sql script 操作,execute sql script 就下面这种模式 Create table_? (…………..)在表的名字上加参数,前面接受一个sequence 或类似的输入操作.需要注意的是这种参数表名包括database table input 或者execute sql script ,只要是参数作为表名的情况前面的输入不能是从数据库来的,应为没有办法执行这种preparedStatement 语句,从数据库来的值后面的操作是 “值操作” ,而不是字符串替换,只有argument 或者sequence 操作当作参数才是字符串替换. (这一点官方FAQ也有提到)2023-06-09 18:07:241
kettle 系统时间是哪个变量
1. 变量的类型 Kettle 的早期版本中的变量只有系统环境变量 目前版本中(3.1) 变量包括系统环境变量, "Kettle变量" 和内部变量三种系统环境变量的影响范围很广,凡是在一个 JVM下运行的线程都受其影响.Kettle 变量限制了变量的作用范围, 变量范围...2023-06-09 18:07:311
kettle 怎样从转换中过的job中定义的变量
楼主 您好 很抱歉解决不了你的问题 ,但是看到您var list_wardNo =parent_job.getVariable("wardNo");var size = new Number(parent_job.getVariable("size"));写的这些东西 我是kettle小白 连在js里面的如何获取变量都不值 看到您写才知道 , 请教您一下 这些js里面的语法比如获取变量等等这些语法从什么地方可以学习,或者有什么资料,希望您给指点迷津2023-06-09 18:08:211
kettle 怎样从转换中过的job中定义的变量
在通用组件中,将【Transformation】拖拽至配置界面,然后双击指定需要运行的转换。2023-06-09 18:08:361
kettle java脚本怎么获取系统信息变量
result.getrows不是获取trans流程里面‘流动"的数据的。trans里面有个‘复制记录到结果"插件,输出到里面的数据,通过result.getrows就能获取。java中获取结果集ResutSet的总条数,可以直接使用其提供的getRow方法来取得,实例如下:2023-06-09 18:08:441
kettle怎么把数据源配置成全局数据源
资源库默认数据库连接为全局共有非资源库a) 将数据库连接进行共享,view-database connections-shareb) 设置为全局变量,在kettle.properties文件中,将数据库连接各属性配置为变量2023-06-09 18:08:521
windows怎么安装kettle的jdk配置
先从官方下载kettle。如果系统没有安装jdk,也需要下载。 至于下载地址,上百度一搜【kettle】、【jdk下载】就好了。 kettle下载下来是一个压缩包,类似pdi-ce-6.0.0.0-353.zip;jdk选择Windows安装版的话,一般是一个exe可执行程序。 安装jdk也很简单,下一步下一步最后就安装好了。此处就不详说了。 我的jdk安装在了:D:Program Files (x86)Javajdk1.7.0_02,这个路径待会需要使用。 设置kettle的java环境变量。 以win7为例:【开始】->【计算机】->【属性】->【高级系统属性】->【高级】->【环境变量】->【新建】,创建用户变量。变量名输入:PENTAHO_JAVA_HOME;变量值输入刚才jdk的安装路径。 部署kettle。 将刚刚下载的kettle压缩包解压出来。 进入解压路径,你可以看到一些子目录,以及一些bat文件。 启动kettle。 在根目录可以看到有一个叫Spoon.bat的文件,双击这个就可以启动我们的kettle程序了。 你也可以把这个文件创建一个快捷方式到桌面,就不用每次都到这个目录来找了。 启动一小会,就可以看到kettle的主界面了。 可以看到有一些教程的链接。如果有注意,在根目录里,有一个叫samples的子目录,里边有很多小栗子。 这样kettle部署配置就完成了。2023-06-09 18:08:592
kettle执行sql脚本以后,得到的结果怎么当做变量传递出去
在转换里面各个【步骤】是并发执行的,数据流是按照顺序执行的。2023-06-09 18:09:121
jdk环境变量配置好后打开kettle下的Spoon.bat,出现下列问题。
kettle_home不需要设置 看看2023-06-09 18:09:215
怎么使用kettle进行增量数据的抽取
哦2023-06-09 18:09:405
Spoon(kettle)建立一个转换任务,里面可以放多少个表输入输出对应流程?
几十个比较无脑,你可以做个循环,获取表名。具体可以百度SELECT GROUP_CONCAT(column_name SEPARATOR ",") AS fieldFROMinformation_schema. COLUMNSWHEREcolumn_name <> (SELECT DISTINCTc.COLUMN_NAMEFROMINFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t,information_schema.KEY_COLUMN_USAGE AS cWHEREc.TABLE_NAME = "audit_system_user"AND t.CONSTRAINT_TYPE = "PRIMARY KEY")AND table_name = "audit_system_user"GROUP BYtable_name先设置一个变量TABLENAME,Kettle有个自定义常量,里面可以赋值(比如40个表)把上面的SQL中的audit_system_user替换成${TABLENAME},即可。这段SQL大致是获取某个表的所有字段,把他保存在变量field中,在循环的过程中就会根据不同的表名,查询的字段也就变化了。2023-06-09 18:09:561
ETL kettle 从上一步传来的参数使用
第一步查到的两列定义为变量,往第二步传递,然后在第二步sql里面进行引用即可。2023-06-09 18:10:272
如何定kettle的服务器配置
.配置Java环境变量a).打开我的电脑--属性--高级--环境变量b).新建系统变量JAVA_HOME和CLASSPATH变量名:JAVA_HOME变量值:C:Program FilesJavajdk1.7.0[具体路径以自己本机安装目录为准]变量名:CLASSPATH变量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;c). 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。2023-06-09 18:11:101
如何自定义修改kettlle默认读取kettle.properties文件路径
1、配置环境变量:变量名为KETTLE_HOME值为:自定义路径。2、自定义路径下必须要有".kettle"文件夹,改文件夹下放置即可。设置完上述操作后必须重启工具。2023-06-09 18:11:171
如何自定义修改kettlle默认读取kettle.properties文件路径
1、配置环境变量:变量名为KETTLE_HOME值为:自定义路径。2、自定义路径下必须要有".kettle"文件夹,改文件夹下放置2023-06-09 18:11:241
不能创建缺省的kettle.properties文件
kettle.properties 是一个变量文件,这个文件我使用的最多的地方是保存 “数据库连接” 用户名和密码。如果不用这个文件,那么使用“数据库连接”时,需要硬编码写到文件里。有一天dba告诉你,库迁移了,数据库用户密码换了/IP变了,那么需要一个文件一个文件的修改密码/IP。如果使用kettle.properties ,可以把用户名密码/IP换成变量。让Kettle的作业文件引用变量。有一天如果环境换了, 可以直接修改变量中的值。而不用一个一个修改作业文件。如何使用kettle.properties ? 1. 先看看自己有没有设置 KETTLE_HOME变量 2. 如果设置了KETTLE_HOME变量,那么在这个目录中新建一个.kettle 目录。在里面创建kettle.properties 文件。抒写方式就是 Key = Value3. 在Kettle的作业文件中引用变量。 ${Key}另外还有一个问题,如果kettle.properties文件被别人看到,岂不是密码都泄露了?答:可以使用 Kettle 安装目录下 encr.sh 脚本对密码加密。2023-06-09 18:11:301
kettle 控制执行哪个步骤
SQL中除了表名不一致外,其他都是一样的。所以首先解决Kettle 表输入中表名替换控制执行问题。Kettle提供了设置变量的步骤,可以将查询出的表名作为变量,在Kettle内进行传递赋值。2023-06-09 18:11:371
win7 安装kettle7.0报错 怎么解决
因为kettle7.0是基于jdk1.8的,所以你用1.7的时候会报错,你可以运行SpoonDebug.bat,把完整的报错输出出来。然后1.8 已经不支持MaxPermSize,所以你要在Spoon.bat中把XX:MaxPermSize修改为MaxMetaspaceSize。2023-06-09 18:11:482
kettle 里怎么实现 循环
完全不会用JOB里的JS控件,建议在A中设置变量,JOB用控件判断2023-06-09 18:12:091
kettle能让job,转换并行执行吗,是不是只能让步骤多线程执行
由于第一次碰linux,对其不是很了解,导致这个问题困扰了我近一个月的时间,现在终于解决了,分享给大家。首先,安装jre,配置java环境变量(一)下载jre-6u23-linux-x64.bin 下载地址:/ESD6/JSCDL/jdk/6u23-b05/jre-6u23-linux-x64.bin?AuthParam=1292401739_2abc6c61c57eec5b100fe647086d1f33&TicketId=CJ0nhpzNkjGGwpbkW40LAgA=&GroupName=CDS&FilePath=/ESD6/JSCDL/jdk/6u23-b05/jre-6u23-linux-x64.bin&File=jre-6u23-linux-x64.bin (二)安装jre-6u23-linux-x64.bin 将jre-6u23-linux-x64.bin上传到linux服务器 1.在终端上,键入:su 2.输入超级用户口令。 3.切换到所需的安装目录。类型:cd例如,要在/usr/java/目录中安装软件,请键入:cd/usr/java/关于超级用户访问权限的说明:要将JRE安装在系统级位置(例如/usr/local),必须以超级用户身份登录,从而获得必要的权限。如果您不具有超级用户访问权限,请将JRE安装在您的主目录中,或者安装在您具有写入权限的子目录中。 4.将您下载的文件的权限更改为可执行。类型:chmoda+xjre-6u23-linux-x64.bin 5.启动安装过程。键入:./jre-6u23-linux-x64.bin此时将显示二进制许可协议。通读许可协议。按空格键显示下一页。读完许可协议后,输入yes继续安装(此步骤可能直接跳过)。 7.JRE安装在其自身的目录中。在本例中,它将安装在/usr/java/jre1.6.0_23目录中。当安装完成时,您将看到Done(完成)字样。 (三)配置java环境变量 1.命令行键入“cd/etc”进入etc目录 2.命令行键入“viprofile”打开profile文件 3.敲击键盘ctrl+F到文件末尾 4.在末尾处,即第一个~的地方,敲击键盘将以下内容输入到文件 JAVA_HOME=/usr/java/jre1.6.0_23 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exportJAVA_HOME exportPATH exportCLASSPATH 5.键盘敲击exc,命令行键入“:wq”,保存文件;6.重新登录linux,在命令行键入“java”,如果出现帮助信息则表示配置成功。然后,部署kettle1.将pdi-ce-4.1.0-stable.zip上传到linux服务器 2.使用unzip命令解压pdi-ce-4.1.0-stable.zipunzippdi-ce-4.1.0-stable.zip-d"/mnt/kettle" 3.赋予解压目录下.sh文件的执行权力 chmod+x*.sh 4.进入解压目录,键入“./kitchen.sh”回车,如果有帮助信息则表示kettle环境部署成功※(重点)接着,编写执行kettle任务的shell脚本创建test.sh,将以下内容复制粘贴到里面,然后键入“chmod+x/mnt/kettle/*.sh”,赋予test.sh执行权限。 exportJAVA_HOME=/usr/java/jre1.6.0_23exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar/mnt/kettle/data-integration/kitchen.sh-file=/mnt/kettle/test.kjb>/mnt/kettle/display.txt说明:前3行,设置java环境变量的语句必不可少,因为crond是个守护进程,它不归属于任何用户,虽然之前以root身份配置了java的环境变量,但是crond一样找不到java命令,所以,当crond执行kettle任务时,需要动态设置java环境变量,crond才能找到java命令。最后,使用crontab命令添加定时任务1.在终端上,键入“crontab-e”,进入定时任务文件2.键入“a”,对文件进行编辑输入如下内容: 23111002*/mnt/kettle/test.sh 其中23为分钟,11为小时,10为日,02为月,*为星期几,crontab命令的使用这里不再赘述。3.键盘敲击exc,终端键入“:wq”,保存文件4.重启crond服务键入“cd/etc/init.d”,进入该目录键入“./crondrestart”,重启crond服务5.等待执行结果6.执行成功,oh..nice!2023-06-09 18:12:161
求,KETTLE怎么用OCI方式连接数据库ORACLE
Java程序连接oracle数据库时,用oci驱动要比用thin驱动性能好些。主要的区别是使用thin驱动时,不需要安装oracle的客户端,而使用oci时则要安装oracle的客户端。从使用thin驱动切换到oci驱动在配置来说很简单,只需把连接字符串java:oracle:thin:@hostip:1521:实例名换为java:oracle:oci@本地服务名即可。如:从jdbc:oracle:thin:@10.1.1.2:1521:shdb改成:jdbc:oracle:oci8:@shdb但这里这台机器需安装oracle数据库的客户端并配置本地服务名,同时还需指定NLS_LANG环境变量,NLS_LANG环境变量是用来控制客户端在显示oracle数据库的数据时所用的字符集和本地化习惯。通常把NLS_LANG的字符集部分指定为数据库所用的字符集,就不会存在java显示的乱码问题了。对于oracle数据库客户端的安装,有二种选择,一是老实的用oracle数据库的安装光盘,安装对应版本的oracle客户端。二是下载oracle提取的即时客户端,即时客户端是不用安装的,把下载包解压即可。要使java web正常的通过oci驱动访问oracle,还需要客户端正确的配置一下相关变量。主要如下:对于windows系统并使用oracle客户端时:1、把%ORACLE_HOME%lib加到PATH环境变量。2、把%ORACLE_HOME%jdbclibclasses12.jar加到CLASSPATH环境变量里,也可以把classes12.jar拷贝到tomcat的commanlib目录下。对于windows系统并使用oracle的即时客户端时(假定即时客户端解压在d盘):1、把d:instantclient_10_2加到PATH环境变量;2、把d:instantclient_10_2classes12.jar加到CLASSPATH环境变量里,也可以把classes12.jar拷贝到tomcat的commanlib目录下。对于linux系统并使用oracle客户端时:1、在使用tomcat的用户主目录下的.bash_profile文件中加入:exprot ORACLE_HOME=/u01/app/oracle/product/9.2.0.4export LD_LIBRARY_PATH=$ORACLE_HOME/lib2、把classes12.jar拷贝到tomcat的commanlib目录下。对于linux系统并使用oracle即时客户端时:1、在使用tomcat的用户主目录下的.bash_profile文件中加入:exprot ORACLE_HOME=/instantclient_10_2export LD_LIBRARY_PATH=$ORACLE_HOME/lib2、把instantclient_10_2目录下的classes12.jar拷贝到tomcat的commanlib目录下。如果一个tomcat下带了几个应用,且几个应用都要连接oracle数据库时,则要注意的是,不要在每个应用的WEB-INF/lib目录下放入oracle的classes12.jar/zip文件。而应该把classes12.jar/zip文件放到tomcat的common/lib目录下。否则会出来ojdbclib9/10库重复加载的错误。使用oracle即时客户端时,本地服务名的建立可以在目录instantclient_10_2下建立tnsnames.ora下添加连接串,如:SHDB =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.1.1.236)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = shdb)))2023-06-09 18:12:381
使用kettle把excel文件导入到数据库时,怎么自动建立一张目标表
以sqlsever为例,选中某数据库--右键--任务--导入数据--数据源:microsoftexcel,然后按照提示操作即可导入。导入后再修改该表的列属性。2023-06-09 18:12:492
打开kettle之后,弹出dos界面,上面写的什么没看清,一闪而过马上就闪退
Spoon.bat 能运行吗?2023-06-09 18:12:562
为什么要做数据分析师:职业规划很重要
关于数据分析师的职业发展:1、数据分析师通常分两类,分工不同,但各有优势。一类是在专门的挖掘团队里面从事数据挖掘和分析工作的。如果你能在这类专业团队学习成长,那是幸运的,但进入这类团队的门槛较高,需要扎实的数据挖掘知识、挖掘工具应用经验和编程能力。该类分析师更偏向技术线条,未来的职业通道可能走专家的技术路线。另一类是下沉到各业务团队或者运营部门的数据分析师,成为业务团队的一员。他们工作是支撑业务运营,包括日常业务的异常监控、客户和市场研究、参与产品开发、建立数据模型提升运营效率等。该类型分析师偏向产品和运营,可以转向做运营和产品。2、数据分析师的理想行业在互联网,但条条大道通罗马,走合适你的路线。从行业的角度来看:1)互联网行业是数据分析应用最广的行业,其中的电商企业,更是目前最火的,而且企业也更重视数据分析的价值,是数据分析师理想的成长平台。2)其次是咨询公司(比如专门的数据挖掘公司Teradata、尼尔森等市场研究公司),他们需要数据分析人才,而且相对来说,数据分析师在咨询公司成长的速度更快,专业也会更全面。3)再次是金融行业,比如银行和证券等行业,该行业对数据分析的依赖需求,越来越大。4)最后是电信行业(中国移动、联通和电信),它们拥有海量的数据,在严峻的竞争下,也越来越重视数据分析,但进入这些公司的门槛比较高。什么人适合学习数据分析?这个问题的答案跟“什么人适合学功夫”一样,毫无疑问,功夫是适合任何人学习的(排除心术不正的人),因为能够强身健体。而功夫的成效,要看习武者的修炼深浅。常常有人争论,是咏春拳厉害,还是散打厉害,其实是颠倒了因果,应该看哪个人练习得比较好,流派之间没有高低,只有人修炼的厚薄。实际上,问题的潜台词是“什么人学习数据分析,会更容易取得成功(比如职业成功)”,这个要视乎你的兴趣、付出和机遇。但要做到出类拔萃,除了上面三点,还需要一点天赋,这里的机遇是指你遇到的职业发展平台、商业环境、导师和同事。借用管理大师德鲁克的话“管理是可以习得的”,管理并非是天生的,而数据分析能力,也可以后天提升。或许做到优秀,只需要你更加的努力+兴趣,而这个努力的过程,也包括你寻找机遇的部分。2023-06-09 18:13:145
怎么用Kettle做不同数据库的数据更新
下载pdi-ce-4.4.0-stable.zip,解压到文件夹,打开data-integration中的Spoon.bat2出现欢迎界面后来到Repository Connection窗口,选择建立一个新的repository,随后出现“资源库信息”窗口:在“资源库信息”窗口中选择新建一个数据库连接,弹出“Database Connection”窗口:在其中输入Connection Name, Host Name, Database Name, Port Number, User Name,Password信息即可建立连接,完成之后在Repository Connection窗口以admin用户名登陆。新建一个名为cscgTransTest的Transformation,从“核心对象”中将两个“表输入”和一个“插入/更新”拖入到cscgTransTest中,并建立它们之间的连接,如下图所示:在cscgTransTest中建立一个新的数据库连接ttt,通过表输入“max_createtime”从目标数据库ttt中获取某个表中最新数据的建立时间:SELECT max(trunc(createtime)) FROMumdata.toeventmedia在cscgTransTest中建立一个新的数据库连接testdb,以表输入“max_createtime”的查询结果替代表输入“umdata.toeventmedia”中的变量,执行SQL语句从数据库testdb中获取需要插入或者更新到ttt数据库的数据SELECT * FROMumdata.toeventmedia where trunc(createtime) >= trunc(?)在“插入/更新”中选择“数据库连接”、“目标模式”、“目标表”等信息,“用来查询的关键字”中的字段用来查询某条记录是否在目标表中存在,不存在则插入记录;如果存在,则继续比较其他字段是否与流里的字段值相同,如果相同则不执行任何操作,如果不同则更新“更新字段”中所列字段。“用来查询的关键字”所列字段是该表的primarykey,从而可以唯一标识一条记录。分别为每一个表建立一个如上模式的转换步骤。新建一个名为“cscgJobTest”的Job,在核心对象中将“START”和“Transformation”拖入cscgJobTest中,并建立两者之间的连接。选中START中的“重复执行”,类型为“不需要定时”;在Transformation中将转换名设置为之前建立的“cscgTransTest”.点击“Run this Job”运行。Job和Transformation的执行结果如如下:2023-06-09 18:13:421
kettle 转换 如何实现nvl
这个问题定位在执行上面这个sql语句出错,报的是数据库错误,你把变量换成常量,试试sql有没有问题,如果还有问题就定位一下转过来的变量的值没有问题。2023-06-09 18:13:491
kettle 插入/更新 和表输出 有什么区别
插入/更新1、 步骤名称:要写入数据的表的schema名称。2、 commit size:提交之前要改变的行数(插入/更新)。3、 不执行任何更新:如果被选择,则不执行任何更新,只允许插入。4、 用来查询的关键字:可以指定字段值或者比较符。可以用以下比较符:>、>=、=、<>、<、<=、between、like、isnull、is not null5、 用来查询的关键字:输入用来指定记录的关键字。6、 更新字段:指定想要插入/更新的字段。备注:还有一个更新的插件,它只能执行更新操作,完全可以由这个插件来代替删除执行删除操作。注意:在输出中,插入/更新、删除、更新对应的是数据库的增、删、改。Excel输出利用这个步骤,可以写入数据到一个或者多个文件中。1、 文件名和扩展名:可以使用变量。2、 头部、尾部:给文件添加头部和尾部。3、 Split every…rows:分割数据到几个输出文件中。4、 Use template:使用模板5、 追加excel模板:是否将Excel输出添加到指定的Excel模板中。Access输出1、 数据库名:注意要写入扩展名,否则输出的文件名不包含扩展名”.mdb”2、 创建数据库:选中则创建数据库。3、 Target table:表名。4、 Create table:选中则创建数据表。5、 Commit size:定义输出数据时的提交尺寸。XML输出1、 文件名中包含步骤号码:如果你在多个拷贝中运行一个步骤,在文件扩展名的前面,将包含拷贝的号码。2、 分割每一个行:每个xml文件中包含的记录数。0表示不分割。3、 正在编码:在XML文件头部指定。4、 字段选项卡5、 元素名称:xml文件使用的元素的名称,不指定,则元素名称和字段名相同。6、 10进制:小数点可以是”.”或者”,”7、 分组:分组符可以是”,”或者”.”8、 空:表示当字段值为空时,则用此字段值代替。还有很多输出插件,它们的图标如下图所示:总结:输出插件和输入插件的种类差不多,输出插件里插入/更新、更新、还有表输出,这几个插件有功能相同的地方,我们可以根据需求来选择需要的插件,因为不同的插件执行的效率也不一样,虽然插入/更新插件具备了更新插件的功能,但是我们都知道功能多的就是没有功能单一的效率高,所以我们可以根据需求来决定应该使用哪个插件更好一些。还有删除插件,这个插件也很好用,可以执行批量删除,效率也很高。2023-06-09 18:13:581
kettle 怎样替代not exists
我也遇到这问题了,分享一下解决方法吧以后没准还有人能用到。我机器的主要问题是环境变量JAVA_HOME的值不对,应该写到jdk也就是C:Program FilesJavajdk1.7.0_25,并且,改完后要重启机器才行(这个很重要)。2023-06-09 18:14:061
Kettle手册(十二)- 控件使用-从步骤插入数据
这里介绍一个控件的小功能,也是最近才发现的,之前在“表输入”中要使用参数的话,一般都是使用变量, 其实,还有个功能也可以尝试使用 整体流程就是这样,我们第一个 query_paramter,就是查询了我们想设置的参数 刚刚,上面还有一个“执行每一行”,这个就是,如果我们有多个参数,2023-06-09 18:14:151
kettle运行spoon.bat时找不到javaw文件
用记事本的方式打开Spoon.bat,看看setJAVA_HOME=C:ProgramFiles(x86)Javajdk1.6.0_29的路径是不是环境变量里配置的路径。2023-06-09 18:14:232
Kettle中的转换里面的设置变量的作用是什么
方便你在之后或者子项目中获取到你设置的变量。比如你在这里设置了一个变量名叫FIELD,你在之后的转换“表输入”控件里SQL可以这么写设置变量大多用在在循环或者某个字段容易变化的时候,方便之后取到这个值谢谢采纳2023-06-09 18:14:411
kettle 我设置了变量为什么只输出其中的一条记录而已
有三种设置方式: 1、 通过命令行 -D 参数。 2、属性文件 kettle.property 中设置, 该属性文件位于 ${user.home}.kettle 下。 3、通过设置环境变量步骤 (Set Variable) 设置。 注意: "Kettle 变量" 只能通过设置环境变量 (Set Variable) 步骤设...2023-06-09 18:14:481
Kettle案例三十七:变量活动类型
Valid in the virtual machine: Valid in the parent job: Valid in the grand-parent job: Valid in the root job:2023-06-09 18:14:571
kettle 怎样从转换中过的job中定义的变量
首先建立转换:从数据库表到日志表输入的设置:日志设置:新建job:转换选择刚才建好的输出日志转换。变量设置如下:此ID就是转换中的${ID},执行job,可以看到控制台输出日志结果:黑色字体部分中只写出了id=1的一条记录。最后补充,将转换的日志写到数据库中:打开转换>ctrl+t>日志选项卡>转换>点击下面的SQL,执行SQL建表。执行完job会在数据库中写入日志记录。2023-06-09 18:15:041
kettle可以使用sql的运行结果作为参数传递吗
可以。例如sqlselectnamefromtable1where.....你可以把这个name作为参数放到kettle之后作为参数。例如“设置变量“控件。或者你可以在这个sql后加一控件“表输入”,参数用?代替即可2023-06-09 18:15:101
kettle可以使用sql的运行结果作为参数传递吗
可以。例如sql select name from table1 where.....你可以把这个name作为参数放到kettle之后作为参数。例如“设置变量“控件。或者你可以在这个sql后加一控件“表输入”,参数用?代替即可2023-06-09 18:15:241
如何安装kettle
不太清楚啊2023-06-09 18:15:543
linux kettle 资源库连接配置文件在哪
1、配置环境变量: 变量名为KETTLE_HOME 值为:自定义路径。 2、自定义路径下必须要有".kettle"文件夹, 改文件夹下放置2023-06-09 18:16:071
ETL kettle 从上一步传来的参数使用
第一步查到的两列定义为变量,往第二步传递,然后在第二步sql里面进行引用即可。2023-06-09 18:16:152
linux上使用crond定时执行kettle的job怎么解决
由于第一次碰linux,对其不是很了解,导致这个问题困扰了我近一个月的时间,现在终于解决了,分享给大家。 首先,安装jre,配置java环境变量 (一) 下载jre-6u23-linux-x64.bin 下载地址:http://cds-esd.sun.com/ESD6/JSCDL/jdk/6u23-b05/jre-6u23-linux-x64.bin?AuthParam=1292401739_2abc6c61c57eec5b100fe647086d1f33&TicketId=CJ0nhpzNkjGGwpbkW40LAgA=&GroupName=CDS&FilePath=/ESD6/JSCDL/jdk/6u23-b05/jre-6u23-linux-x64.bin&File=jre-6u23-linux-x64.bin (二) 安装jre-6u23-linux-x64.bin 将jre-6u23-linux-x64.bin上传到linux服务器 1. 在终端上,键入:su 2. 输入超级用户口令。 3. 切换到所需的安装目录。类型:cd <</strong>目录路径名>例如,要在 /usr/java/ 目录中安装软件,请键入:cd /usr/java/关于超级用户访问权限的说明:要将 JRE 安装在系统级位置(例如 /usr/local),必须以超级用户身份登录,从而获得必要的权限。如果您不具有超级用户访问权限,请将 JRE 安装在您的主目录中,或者安装在您具有写入权限的子目录中。 4. 将您下载的文件的权限更改为可执行。类型:chmod a+x jre-6u23-linux-x64.bin 5. 启动安装过程。键入:./ jre-6u23-linux-x64.bin此时将显示二进制许可协议。通读许可协议。按空格键显示下一页。读完许可协议后,输入 yes 继续安装(此步骤可能直接跳过)。 7. JRE 安装在其自身的目录中。在本例中,它将安装在 /usr/java/ jre1.6.0_23目录中。当安装完成时,您将看到Done(完成)字样。 (三) 配置java环境变量 1. 命令行键入“cd /etc”进入etc目录 2. 命令行键入“vi profile”打开profile文件 3. 敲击键盘ctrl+F到文件末尾 4. 在末尾处,即第一个~的地方,敲击键盘将以下内容输入到文件 JAVA_HOME=/usr/java/jre1.6.0_23 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH 5. 键盘敲击exc,命令行键入“:wq”,保存文件; 6. 重新登录linux,在命令行键入“java”,如果出现帮助信息则表示配置成功。然后,部署kettle 1. 将pdi-ce-4.1.0-stable.zip上传到linux服务器 2. 使用unzip命令解压pdi-ce-4.1.0-stable.zipunzip pdi-ce-4.1.0-stable.zip -d "/mnt/kettle" 3. 赋予解压目录下.sh文件的执行权力 chmod +x *.sh 4. 进入解压目录,键入“./kitchen.sh”回车,如果有帮助信息则表示kettle环境部署成功※(重点)接着,编写执行kettle任务的shell脚本创建test.sh,将以下内容复制粘贴到里面,然后键入“chmod +x /mnt/kettle/*.sh”,赋予test.sh执行权限。 export JAVA_HOME=/usr/java/jre1.6.0_23export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar/mnt/kettle/data-integration/kitchen.sh -file=/mnt/kettle/test.kjb > /mnt/kettle/display.txt说明:前3行,设置java环境变量的语句必不可少,因为crond是个守护进程,它不归属于任何用户,虽然之前以root身份配置了java的环境变量,但是crond一样找不到java命令,所以,当crond执行kettle任务时,需要动态设置java环境变量,crond才能找到java命令。最后,使用crontab命令添加定时任务 1.在终端上,键入“crontab -e”,进入定时任务文件 2.键入“a”,对文件进行编辑 输入如下内容: 23 11 10 02 * /mnt/kettle/test.sh 其中 23为分钟,11为小时,10为日,02为月,*为星期几,crontab命令的使用这里不再赘述。 3.键盘敲击exc,终端键入“:wq”,保存文件 4.重启crond服务 键入“cd /etc/init.d”,进入该目录 键入“./crond restart”,重启crond服务 5.等待执行结果 6.执行成功,oh..nice!2023-06-09 18:16:591
kettle启动报错:Could not find the main class:org.pentaho.commons.launcher.Launcher
could not find the main class:org.pentaho.commons.launcher.Launcher. Program will exit. 一般情况是缺少环境变量,可以如下操作:右键点击计算机→更改设置→高级→环境变量→新建系统环境变量变量名称:PENTAHO_JAVA_HOME变量值: D:Program FilesJavajdk1.6.0_45(值按照你实际的JDK路径填写)2023-06-09 18:17:081
使用kettle把excel文件导入到数据库时,怎么自动建立一张目标表
如果一定要用kettle解决的话,写个shell,自动解析excel,然后创建目标表。或者重写kettle的控件。kettle工具安装很简单,从官网上下载下来之后,直接解压到制定的盘符下即可(前提是你配置了JAVA的环境变量,path,classpath)。在WINDOWS环境下双击Spoon.bat文件,出现如下图:image点击如图所示的图标,进行本地文件导入的配置image选择红色线框下的选项,点击确定image按照上面的操作,点击确定即可。imageimage直接点击关闭即可.image通过上面两个地方的任意一个都可以创建一个数据转换的工程。image从左边的输入中选择Excel输入拖动到右边的地方,双击显示的图标。image按照如上的操作步骤,选择好要导入数据的Excel,然后选择工作表。image然后点击获取工作表名称image点击确定image接着配置字段的显示。image点击确定,这样Excel输入的配置就配置好了。接下来配置表输出(即将Excel中的数据导出到目标的数据库中的表中,注意这里数据库中表的字段最好和excel表中的字段一致,这样接下来的数据字段映射就比较方便了)image从右边的输出中将表输出拖动到右边image建立两者之间的连接关系(将鼠标放到Excel输入上,会出现选项,将鼠标放到对应的选项上,然后拖动鼠标到表输出中出现蓝色线条既可)image数据连接成功后,选择将数据导入到目标表的表的配置image然后选择数据库字段,进行字段映射的配置image这样将字段全部加入到最右边的方框中,点击确定。image点击确定就可以了,这样整个配置就结束了。点击启动就可以了image。这样在数据库中相对应的表中就可以查看到数据2023-06-09 18:17:171
kettle怎么建立数据库连接
下载pdi-ce-4.4.0-stable.zip,解压到文件夹,打开data-integration中的Spoon.bat2出现欢迎界面后来到Repository Connection窗口,选择建立一个新的repository,随后出现“资源库信息”窗口:在“资源库信息”窗口中选择新建一个数据库连接,弹出“Database Connection”窗口:在其中输入Connection Name, Host Name, Database Name, Port Number, User Name,Password信息即可建立连接,完成之后在Repository Connection窗口以admin用户名登陆。新建一个名为cscgTransTest的Transformation,从“核心对象”中将两个“表输入”和一个“插入/更新”拖入到cscgTransTest中,并建立它们之间的连接,如下图所示:在cscgTransTest中建立一个新的数据库连接ttt,通过表输入“max_createtime”从目标数据库ttt中获取某个表中最新数据的建立时间:SELECT max(trunc(createtime)) FROMumdata.toeventmedia在cscgTransTest中建立一个新的数据库连接testdb,以表输入“max_createtime”的查询结果替代表输入“umdata.toeventmedia”中的变量,执行SQL语句从数据库testdb中获取需要插入或者更新到ttt数据库的数据SELECT * FROMumdata.toeventmedia where trunc(createtime) >= trunc(?)在“插入/更新”中选择“数据库连接”、“目标模式”、“目标表”等信息,“用来查询的关键字”中的字段用来查询某条记录是否在目标表中存在,不存在则插入记录;如果存在,则继续比较其他字段是否与流里的字段值相同,如果相同则不执行任何操作,如果不同则更新“更新字段”中所列字段。“用来查询的关键字”所列字段是该表的primarykey,从而可以唯一标识一条记录。分别为每一个表建立一个如上模式的转换步骤。新建一个名为“cscgJobTest”的Job,在核心对象中将“START”和“Transformation”拖入cscgJobTest中,并建立两者之间的连接。选中START中的“重复执行”,类型为“不需要定时”;在Transformation中将转换名设置为之前建立的“cscgTransTest”.点击“Run this Job”运行。Job和Transformation的执行结果如如下:2023-06-09 18:17:261