1. 怎样利用kettle去一次性读取表中所有的数据
拖动表输入控件,绑定数据源连接你要查询的数据库
SQL语句
select * frm table
此时你已经可以获取表中所有数据,根据你后续的需要,再去执行后续相关的操作。
例如过滤就用过滤控件,同步就用表输出控件插入另一张表(甚至可以不同数据源)
2. kettle中做查询时,遇到大数据时怎么处理
在kettle常常有处理从一个源数据中做转换.做转换的时候, 需要去查另一个数据库.
这种问题遇到数据小时候还好办. 但是数据魇 时候就麻烦来了.
下面针对三种情况做具体情况的选择办法
先上一个图
[img]
[/img]
1. 当需要转换的数据特别大的时候, 例如: 10W条以上.或者100W条以上时.
上图中,hadoop数据导入,导入的数据如果够多,例如100W条以上,其中一个字段需要查询数据库中查询,而这个字段的类型并不多,例如只有10个类型或者数据库中就只有这10个类型.那么,可以走线路2, 并且线路2中的 "使用缓存" 可以打勾,也可以不打.当然你这个源里的数据太多,打上当然最好了.因为省得再去你的数据库里再查.
但是当源里的数据类型还是只有10个类型,但是你的数据库里面存了有10000条记录时,怎么办?
有两种解决办法:
1).线路2:并且查询节点中的 "使用缓存" 不能打勾.
2).线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来.这样在流里的比对时.也很快很多.必竟是在内存里做运算了
2. 查另一个数据库的数据量大时,而你的源数据不大.
最好的选择是
线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来.这样在流里的比对时.也很快很多.必竟是在内存里做运算了
3. 当两个数据源都非常大时(最不想遇到的)
这种情况是最不想遇到的办法
一种选择:
1).线路2中的 "使用缓存" 打勾.
当然还有别的更复杂但是会更快的办法.适用场景比较少,不再详细写了.
3. 通过取出kettle日志里过滤数据的条数来记录,java有这样的包吗
这个我没遇到过。不过可以这样:你在kettle里做个过滤,吧过滤出的数据单独写到 txt或者数据表里,然后 java调 ktr ,然后开个线程 扫描过滤的数据。
4. 我不太明白,kettle抽取这种文本里的数据,想要得到姓名,性别等数据,我应该怎么获取字段
Kettle 的几个子程序的功能和启动方式
Spoon.bat: 图形界面方式启动作业和转换设计器。
Pan.bat: 命令行方式执行转换。
Kitchen.bat: 命令行方式执行作业。
Carte.bat: 启动web服务,用于 Kettle 的远程运行或集群运行。
Encr.bat: 密码加密
(请注意这里各个文件的名字,很有趣,类似于hadoop中的名字,这也许是属于国外程序猿的一种幽默吧)
转换和作业
Kettle 的 Spoon 设计器用来设计转换(Transformation)和 作业(Job)。
转换主要是针对数据的各种处理,一个转换里可以包含多个步骤(Step)。
作业是比转换更高一级的处理流程,一个作业里包括多个作业项(Job Entry),一个作业项代表了一项工作,转换也是一个作业项。
操作界面如下
保存作业
用户通过 Spoon 创建的转换、作业、数据库连接等可
以保存在资源库和 XML 文件中。
转换文件以ktr为扩展名,作业文件以kjb为扩展名
资源库可以是各种常见的数据库。可以在Spoon中自动创建资源库,资源库默认用户名和密码是admin/admin。
输入步骤简介
输入类步骤用来从外部获取数据,可以获取数据的数据源包括,文本文件(txt,csv,xml,json)数据库、 Excel 文件等桌面文件,自定义的数据等。对特殊数据源和应用需求可以自定义输入插件。
输入内容部分截图如下:
转换步骤简介
转换类步骤是对数据进行各种形式转换所用到的步骤。
例子:
-字段选择(就比如我们我负责的现在我们公司的数据库转移工作,字段选择很重要)
-计算器
-增加常量
流程步骤简介
流程步骤是用来控制数据流的步骤。一般不对数据进行操作,只是控制数据流。
例子:
过滤步骤
输出步骤简介
既然有输入和过滤,那么一定也要有输出了。输出步骤是输出数据的步骤,常见的输出包括文本文件输出、表输出等,可以根据应用的需求开发插件以其他形式输出。
例子:
表输出等,如下图
总结
5. 请教李傲老师,关于KETTLE中中的in list 方法的使用
方式。分为三种:无条件,成功,失败,为了方便工作流使用,KETTLE提供了几个辅助结点单... listdir : List the dir...些默认的配置(如数据库存储位置…),在系统的用户目录下,单独建立了一个.Kettle目录... List the directories in t
6. 请教李傲老师,关于KETTLE中中的in list 方法的使用
看了一下时间,虽然很晚了,不过我也遇到了,跟你分享一下。我查了网上很多资料,相信你也看了,但问题还是没有解决。
最后无意之间把ojdbc14.jar的包换成了ojdbc6.jar,问题解决了。
具体原因不知道,没有深究这两个报的区别。你可以试试。就是不知道你的是不是这个问题。
7. 请教李傲老师,关于KETTLE中中的in list 方法的使用
in list beijing;shanghai
分号分隔即可
8. kettle怎么过滤掉某个字段空字符串数据
利用Kettle的“过滤记录”
字符串替换”,“字符串操作”组件,实现记录的过滤,字符串替换及字符串的去空格功能。
9. kettle 怎么根据时间字段进行过滤
今天使用kettle从mysql导数到oracle,发现只导了7行后,数据传输就终止了,查看日志信息,报内错如下容:
image
报:Couldn't get row from result set问题。
发现从这行开始这个时间字段除了正常的时间数据以外还有NULL值,难道这类的值引起的错误,在查询了相关资料后,才知道jdbc(默认行为)认为null或'0000-00-00'这样的日期时间值是无效的。如果想避开这个问题,需要编辑jdbc的连接属性,添加如下属性值:
zeroDateTimeBehavior=convertToNull
image
设置之后导数成功进行。
image
所以,设计生产系统中的相关表时,默认值最好不要使用'0000-00-00'或null这样的值。