和很多流行开源软件一样,Kettl 不断增加新的功能,但同时也不断引入新的 bug,因此一直没有一个稳定的对中文友好的版本,这也是很多开发人员烦恼的事情。
在我们这几年从事 kettle 的开发和应用实施工作中,也做了很多 bug 修订和二次开发工作,有的汉化和修订也提交到了 kettle 的 trunk 分支中。
为了我们本身工作的需要,也为了满足 kettle fans 对中文稳定版的需要,我们计划开发 kettle 中文稳定版。
该版本以 kettle 3.2 stable 为基线版本,原则上只修改bug,不再引入新的功能。
欢迎 kettle fans 们以各种形式参与该版本的开发。如:
通过论坛提交bug ,尤其和中文相关的问题。
或者直接将您修订的代码提交到 SVN。(申请提交权限,可以联系 support@xgndata.com)
因为 Kettle 遵照 LGPL 协议,该中文版本也遵照 LGPL 协议
svn 下载(不需用户名)
svn://xgndata.com/kettle/3.2_xgn
二进制下载
http://www.xgndata.com/resources/kettle/kettle_3.2_xgn.zip
有个客户是做外贸生意的,经常需要群发邮件,要求邮件里商品名称,收信人称谓等内容是动态的。
他一直找不到一个合适的免费的群发工具,于是我推荐他使用了 kettle,并帮他画了一个流程来群发邮件。(这位朋友不是IT 人员,不会开发,只会使用 Microsoft Office )。
(转载请注明:http://pdi.itpub.net)
在我做的群发邮件流程里,还用到了我以前开发的一个插件(就是把文件内容作为字段加入到数据流)。 发送邮件流程,插件,kettle 我都集中在一起发布了。大家可以从 这里下载 该 kettle 的版本(该版本是基于 kettle 3.2 stable,修改了kettle 3.2 stable 里的一些常见 bug,并集成了上面说到的插件,另外还集成了其他几个常用插件,如 pdf 文件读取插件,表增量输入插件等,另外集成了运行环境 jre1.6)。
制作 kettle 插件时,在 processRow 方法里的几个常用方法说明:(转载请注明:http://pdi.itpub.net)
//复制输入行的元数据,并设置为输出行的元数据。
RowMetaInterface outputRowMeta = getInputRowMeta().clone();
//构造一个新的输出列。方法一
RowMetaInterface rowMeta = new RowMeta();
Object[] rowData = new Object[1];
int valtype = ValueMeta.getType("String");
ValueMetaInterface valueMeta = new ValueMeta( “FieldName1”, valtype); valueMeta .setLength(-1);
rowMeta.addValueMeta(valueMeta);
RowMetaAndData metaAndData = new RowMetaAndData(rowMeta, rowData);
查看全文例子里用到的 org.htmlparser.Parser 是一个html 的解析器,可以在 sourceforge 上下载。
这个例子使用 org.htmlparser.Parser 包来解析一个 html 格式的字符串,要解析的 html 字符串保存在conntentOld 字段里。
解析过程去除了 html 格式里所有标签,并将结果保存在 content 字段里。
注意事项:
1. 需要事先将htmlparser.jar包 放在kettle 的 libext 目录,kettle 在启动时会自动加载libext 目录下的所有 jar 包。
2. modified java script 步骤要选中 compatibility mode,并将 content 设置为输出的字段。
代码如下:
查看全文kettle 的实用小功能 中介绍了如何批量读取二进制文件的内容,这里说一下批量读取文本文件的方法。
第一步也是使用 Get File Names 步骤,根据正则表达式来获取一个路径下所有指定的文件名。
第二步骤使用 modified javascript 脚本步骤,来读取这些指定的文本文件,脚本如下。
查看全文看了这个新闻
http://tech.sina.com.cn/it/2010-04-22/10024094959.shtml
不禁有些感慨,微软的东西的确好用,但好用的东西是要花钱的。(转载请注明 http://pdi.itpub.net)
微软的市场手段也很高明,先是纵容盗版,培养人们的消费习惯,熟悉他的软件,依赖他的软件,待到时机成熟时,就要向企业敛钱了。
除了微软,很多商业软件也是这么做的,这种方式就像撒种子一样。开始是通过各种渠道,如免费发放试用版,纵容盗版,让用户尝试使用软件,体会到软件带来的便利。等到用户操作习惯了,依赖上这个软件,商业软件们就开始收割了。相信不少商业用户也收到过 UltraEdit ,Adobe,这类常用工具软件的律师函,这样的软件我都不敢用了,已经使用开源替代了。
商业软件的这种策略本也无可厚非,也是一种常规的市场手段。就象银行的借记卡 一样,如果银行刚推出借记卡时就收年费,可能不会有多少储户去申请的。但这种策略但往往会给用户猝不及防的感觉。让很多人想不通的是用了这么多年,怎么忽然就不让用了。原因很简单,那就是:从你免费使用一个商业软件的第一天起你掉进了一个温柔的陷阱。
这种市场策略的关键在于软件的依赖性,或称软件粘度,或称软件的可替代性。微软的成功也在用操作系统的粘度是最大的。
但时代在变革,开源已经初露锋芒。 Linux 在易用性可用性上已经有了很大的提高, 一些 Linux 的版本如 Ubuntu 已经可以被普通用户接受。Mysql,PostGre 一直都是数据库领域的流行软件,性能、稳定性不在Sql Server 之下。Tomcat 和 JBOSS 就更不用说了。即使象 UltraEdit 这样的常用小工具,Pspad 也完全可以代替它了。Pentaho 在商业智能方面也暂露头角,尽管还不能和 IBM 和 Oracle 相提并论,但用来做中小企业的 BI 方案,或者做大企业的入门级 BI 也已经足够了。(转载请注明 http://pdi.itpub.net)
最近需要做一个 Common File Reader 的 kettle 插件,希望这个插件可以读取例如 PDF, WORD, PPT, WPS 等常见格式文件的内容,今天已经实现了第一步,读取 PDF 的功能。
该插件是一个输入步骤, 它可以将读取到的 PDF 文件的每一页作为一行输入记录。下面是一个比较典型的应用例子:
查看全文在 kettle 里, NULL 和空字符串是不加区别的,就是说如果往数据库里插入一个空字符串,你会发现数据库里插入的是 NULL,这对 ORACLE 的 DBA 的来说可能是司空见惯的事情,但对于 SqlServer 和 Mysql 的 DBA 来说可能就是无法接受的事情。
查看全文mondrian output 的插件和代码现在可以下载了。
这个插件可以把 mondrian 的查询结果以 excel 和 chart 的方式展现出来, 并放在 kettle 的结果文件里,继续处理,如作为邮件附件等。
查看全文kettle 3.2 以前的版本里只有 variable 和 argument, 所以在 GUI 上对这两个单词的汉化,分别是变量和参数。
但是在 kettle 3.2 中,又引入了 parameter 概念
http://jira.pentaho.com/browse/PDI-1381,
查看全文
最近在做两个数据同步的项目。第一个数据同步项目要求一个系统向多个系统同步,有些类似于 SqlServer 订阅发布的概念,不过一个源和多个目标的数据库的结构差别很大,是不同的应用系统。第二个数据同步项目要求在两个异构数据库系统之间进行双向同步。
查看全文增量抽取是应用项目中很常见的一种需求。在本 blog 前面的文章中对增量抽取的几种实现方式有比较详细的说明。这里要介绍的表增量输入步骤就是基于触发器这种方式以 kettle 插件的方式实现的。对于各类支持触发器的数据库,都可以使用这个插件来进行增量抽取。
查看全文










