PDI (Kettle) 中文博客
置顶
域名 www.xgndata.com 变更为 www.pentahochina.com
公告
域名 www.xgndata.com 变更为 www.pentahochina.com
===========================================================
kettle 实用功能之三 ---- 使用 kettle 群发动态内容的邮件。
===========================================================

有个客户是做外贸生意的,经常需要群发邮件,要求邮件里商品名称,收信人称谓等内容是动态的。
他一直找不到一个合适的免费的群发工具,于是我推荐他使用了 kettle,并帮他画了一个流程来群发邮件。(这位朋友不是IT 人员,不会开发,只会使用 Microsoft Office )。

(转载请注明:http://pdi.itpub.net)
在我做的群发邮件流程里,还用到了我以前开发的一个插件(就是把文件内容作为字段加入到数据流)。 发送邮件流程,插件,kettle 我都集中在一起发布了。大家可以从 这里下载 该 kettle 的版本(该版本是基于 kettle 3.2 stable,修改了kettle 3.2 stable 里的一些常见 bug,并集成了上面说到的插件,另外还集成了其他几个常用插件,如 pdf 文件读取插件,表增量输入插件等,另外集成了运行环境 jre1.6)。

 查看全文
PDI 发表于:2010.06.26 23:25 ::分类: ( PDI 使用 ) ::阅读:(1662次) :: 评论 (4)
===========================================================
kettle modified javascript 步骤的一个例子
===========================================================

例子里用到的 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 设置为输出的字段。

代码如下:

 查看全文
PDI 发表于:2010.05.19 09:49 ::分类: ( PDI 使用 ) ::阅读:(1736次) :: 评论 (0)
===========================================================
kettle 实用小功能(二),读取一个目录下文本文件的内容
===========================================================

kettle 的实用小功能 中介绍了如何批量读取二进制文件的内容,这里说一下批量读取文本文件的方法。

第一步也是使用 Get File Names 步骤,根据正则表达式来获取一个路径下所有指定的文件名。

第二步骤使用 modified javascript 脚本步骤,来读取这些指定的文本文件,脚本如下。

 查看全文
PDI 发表于:2010.05.19 00:35 ::分类: ( PDI 使用 ) ::阅读:(1399次) :: 评论 (0)
===========================================================
kettle 里的 variables, arguments, 和 parameters
===========================================================

kettle 3.2 以前的版本里只有 variable 和 argument, 所以在 GUI 上对这两个单词的汉化,分别是变量和参数。

但是在 kettle 3.2 中,又引入了 parameter 概念

http://jira.pentaho.com/browse/PDI-1381

 查看全文
PDI 发表于:2009.11.17 00:29 ::分类: ( PDI 使用 ) ::阅读:(1799次) :: 评论 (1)
===========================================================
kettle 的实用小功能
===========================================================

kettle 除了作为 ETL 工具外,还有很多数据处理方面的实用功能,本文介绍几个实用的小功能。

1. 文件批量入库
该功能可以将一个目录下的全部或部分文件加载到数据库中。
流程图:

 查看全文

PDI 发表于:2009.05.24 11:24 ::分类: ( PDI 使用 ) ::阅读:(2898次) :: 评论 (8)
===========================================================
在 kettle 里如何使用 JNDI 方式连接数据源
===========================================================

使用 JNDI 的好处就是便于部署和数据源的变更,kettle 也提供了 JNDI 方式连接。
本文以 tomcat 和 mysql 为例,说明 kettle 如何使用 JNDI 方式连接数据源

1. 先将你的应用部署到 webapps 下,如 webapps/example。

 查看全文
PDI 发表于:2009.05.16 19:35 ::分类: ( PDI 使用 ) ::阅读:(1931次) :: 评论 (0)
===========================================================
使用 mondrian output job entry 输出图表
===========================================================
根据开发计划和项目的需要,最近又为 mondrian output job entry 增加了输出图形的功能,目前这个插件支持从 MDX 查询生成 excle 表格和图形,图形以图片的方式保存,并嵌入到excel 的工作簿中。 查看全文
PDI 发表于:2009.04.17 21:41 ::分类: ( PDI 使用 ) ::阅读:(1770次) :: 评论 (1)
===========================================================
如何使用 Kettle 读取包含多行表头的 Excel 文件
===========================================================

如果 Excel 工作表的表头只有一行,使用 Kettle 读取这样的文件是很容易的.
如果 Excel 工作表的表头是多行的, 或者是分级的就需要在内容标签下正确设置列名所占行数才可以读取.

考虑这样的一个工作表

如果想把里面的 9 列数据都读出来, 就要考虑如何处理多级表头.

 查看全文

PDI 发表于:2008.10.19 10:19 ::分类: ( PDI 使用 ) ::阅读:(2961次) :: 评论 (3)
===========================================================
如何给一个 Kettle 转换设置变量和命令行参数 - 例子和 API
===========================================================

假设我们现在要将一批 Excel 文件导入到一个数据库里, 而Excel 文件的名称和目录是不定的, 这时就要使用变量了.
在 "Excel 输入" 步骤中将文件名设置为一个变量如 ${filename}, 如下图:

 查看全文
PDI 发表于:2008.10.17 10:40 ::分类: ( PDI 使用 ) ::阅读:(3978次) :: 评论 (1)
===========================================================
如何给一个 Kettle 转换设置变量和命令行参数 - 简介
===========================================================

1. 变量的类型
Kettle 的早期版本中的变量只有系统环境变量
目前版本中(3.1) 变量包括系统环境变量, "Kettle变量" 和内部变量三种

系统环境变量的影响范围很广,凡是在一个 JVM下运行的线程都受其影响.

Kettle 变量限制了变量的作用范围, 变量范围包括三种分别是 grand-parent job, parent job, root job

内部变量: 是 kettle 内置的一些变量, 主要是kettle 运行时依赖的环境, 如转换文件名称, 转换路径,ip地址, kettle 版本号等等.

 查看全文

PDI 发表于:2008.10.16 16:41 ::分类: ( PDI 使用 ) ::阅读:(5035次) :: 评论 (8)
===========================================================
spoon 使用 java web start 方式运行的配置方法
===========================================================

1. 在 kettle 工程目录下, 运行 "ant webstart" 编译并打包.
2. 此时新创建了一个 webstart 目录, 将该目录下的 kettle.war 部署到应用服务器上(如 tomcat 的webapp 目录下).
3. 编辑 Spoon.jnlp 文件, 设置 codebase 使之指向 web 服务的 URL

 查看全文
PDI 发表于:2008.10.11 21:45 ::分类: ( PDI 使用 ) ::阅读:(6415次) :: 评论 (5)
===========================================================
设计和运行一个 Kettle 转换(trans) 或作业(job) 的几种方式
===========================================================

最近经常有 Kettle 爱好者问起 Kettle 的运行方式, 能否使用web 方式运行? 本文就 Kettle 的运行方式做一个简单的总结.

可以有三种方式来设计 Kettle 的转换或作业(job):
1. 通过客户端的方式, 就是使用 spoon 和 chef 这两个工具, 在最近的版本里(3.0 以后), chef 已经集成到了spoon 中, 只要通过 spoon 就可以设计转换和作业了.
2. 通过 Java web start 的方式, 这种方式实际也使用Spoon, 不过对用户来说更方便, 直接在 web 页面上,就可以运行 Spoon 了.

 查看全文
PDI 发表于:2008.10.11 21:38 ::分类: ( PDI 使用 ) ::阅读:(4293次) :: 评论 (0)
===========================================================
PDI 的帮助都移到了 wiki 上
===========================================================

以前 Spoon 的帮助都是以 PDF 文件提供的, 现在都移到了 wiki 上, 这样用户可以直接在 wiki 上发评论:

http://wiki.pentaho.com/display/EAI/Spoon+User+Guide

 查看全文
PDI 发表于:2008.09.28 12:15 ::分类: ( PDI 使用 ) ::阅读:(857次) :: 评论 (0)
===========================================================
PDI 对 PostGreSQL 的一些特殊处理
===========================================================

PostGreSQL 和其它数据库(SQLServer, Oracle等)有一个很大的不同: 就是写数据时,如果有主键冲突或其它错误,PostGreSQL 会等待事务结束,错误语句后面的语句都将被忽略.

 查看全文
PDI 发表于:2008.09.26 13:57 ::分类: ( PDI 使用 ) ::阅读:(894次) :: 评论 (0)
===========================================================
Kettle 和其它几种 ETL 工具(包括 Informatica)的比较
===========================================================

compare

成本:
软件成本包括多方面,主要包括软件产品, 售前培训, 售后咨询, 技术支持等。
开源产品本身是免费的,成本主要是培训和咨询,所以成本会一直维持在一个较低水平。
商业产品本身价格很高,但是一般会提供几次免费的咨询或支持,所以采用商用软件最初成本很高,但是逐渐下降。
手工编码最初成本不高,主要是人力成本,但后期维护的工作量会越来越大。

compare_cost

 查看全文
PDI 发表于:2008.09.24 13:51 ::分类: ( PDI 使用 ) ::阅读:(3088次) :: 评论 (1)
===========================================================
如何使用kettle 做数据清洗
===========================================================
下面是使用 kettle 做数据清洗的一些经验供大家参考
1. 对于简单的清洗, 如数据类型,数据长度,精度,刻度等, 可以直接将各种输入步骤(文本,excel,access,dbms)的列字段的数据类型设置正确,同时在错误处理中忽略错误,这样不符合格式的数据被忽略了. 另外"过滤" 步骤可以简单的将符合某个条件的数据过滤, "过滤步骤" 实际上就是一个Where 子句. 查看全文
PDI 发表于:2008.09.22 11:25 ::分类: ( PDI 使用 ) ::阅读:(1829次) :: 评论 (1)
===========================================================
一种特殊文本格式的输入
===========================================================

"1"|"99A1026164***01"|"1"|"张学友"|"香港市"|"200063"|"张学友"|"个人"|"00****72"|"99A102616400"|"xx证券"|"66800000030005119"|"身份证"|"313705197310******"|"133****0369"|""|""|""|"寄送"|""|""|""|""|""|""|""|"20080129"|"20080129"|""|"20080125"|"20080131"|"20080124"|"20080130"|"对账单"|"20080130"|"20080131"|"正常"
"2"|"519008"|"xx证券"|"前收费"|"现金分红"|"10,143.96"|"0.00"|"10,143.96"|"4.7851"|"4.7094"|"48,539.86"|"47,771.97"|"xx证券"|"xx证券"|"普通基金"|""|"0.00"|"0.00"|"20080130"|"20080131"|"0"|"0"
"3"|"20080128"|"9900145307"|"66800000030005119"|"50,000.00"|"0.00"|"20080129"|"0801296680000005267"|"申购"|"519008"|"xx证券"|"前收费"|"50,000.00"|"10,143.96"|"738.92"|"4.8562"|"xx证券"|"xx证券"|"0.00"|""|"0000"|""|"0.00"
"4"|"1"


"1"|"99A1055582***02"|"1"|"戴军"|"香港市"|"200001"|"戴军"|"个人"|"00****32"|"99A105558261"|"xx银行"|"0019363657"|"身份证"|"313101198708******"|"63524722"|"136****6571"|""|""|"寄送"|""|""|""|""|""|""|""|"20080125"|"20080125"|""|"20080125"|"20080131"|"20080124"|"20080130"|"交易对账单"|"20080130"|"20080131"|"正常"
"2"|"519068"|"xx证券"|"前收费"|"现金分红"|"1,277.02"|"0.00"|"1,277.02"|"1.4661"|"1.4400"|"1,872.24"|"1,838.91"|"xx银行"|"xx银行"|"普通基金"|""|"0.00"|"0.00"|"20080130"|"20080131"|"0"|"0"
"3"|"20080124"|"9900056752"|"0019363657"|"2,000.00"|"0.00"|"20080125"|"0801250180000093180"|"定期定额申购"|"519068"|"xx证券"|"前收费"|"2,000.00"|"1,277.02"|"29.56"|"1.5430"|"xx银行"|"xx银行"|"0.00"|""|"0000"|""|"0.00"
"4"|"1"


"1"|"99A1083795***03"|"1"|"叶倩文"|"香港市"|"200063"|"叶倩文"|"个人"|"00***74"|"99A108379577"|"xx证券"|"66800000030005111"|"身份证"|"313705199405******"|"132****0369"|""|""|""|"寄送"|""|""|""|""|""|""|""|"20080129"|"20080129"|""|"20080125"|"20080131"|"20080124"|"20080130"|"交易对账单"|"20080130"|"20080131"|"正常"
"2"|"519008"|"xx证券"|"前收费"|"红利转投"|"20,287.91"|"0.00"|"20,287.91"|"4.7851"|"4.7094"|"97,079.68"|"95,543.88"|"xx证券"|"xx证券"|"普通基金"|""|"0.00"|"0.00"|"20080130"|"20080131"|"0"|"0"
"3"|"20080128"|"9900145291"|"66800000030005111"|"100,000.00"|"0.00"|"20080129"|"0801296680000005266"|"申购"|"519008"|"xx证券"|"前收费"|"100,000.00"|"20,287.91"|"1,477.83"|"4.8562"|"xx证券"|"xx证券"|"0.00"|""|"0000"|""|"0.00"
"3"|"20080128"|"9900145334"|"66800000030005111"|"0.00"|"0.00"|"20080129"|"0801296680000005271"|"设置红利转投"|"519008"|"xx证券"|"前收费"|"0.00"|"0.00"|"0.00"|"0.0000"|"xx证券"|"xx证券"|"0.00"|""|"0000"|""|"0.00"
"4"|"1"

 查看全文
PDI 发表于:2008.08.21 11:58 ::分类: ( PDI 使用 ) ::阅读:(1283次) :: 评论 (1)
===========================================================
Kettle 在应用中遇到的一些问题和解决方法
===========================================================

本文主要总结了 Kettle 在中文环境应用中遇到的一些问题, 问题列表还会不断增加. 这些问题都是 kettle fans 提供的,欢迎参与讨论.

问题1:
从excel 中抽取数据,插入到oracle 9 数据库中,报下面的错误.
2008/06/25 13:30:57 - 插入更新数据表.0 - Insert row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:00:00.000]
2008/06/25 13:30:57 - oracl - ERROR : java.sql.SQLException: ORA-01722: 无效数字
2008/06/25 13:30:57 - oracl - ERROR : at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)

 查看全文
PDI 发表于:2008.07.19 23:45 ::分类: ( PDI 使用 ) ::阅读:(3980次) :: 评论 (9)
===========================================================
关于 PDI 性能的简单测试
===========================================================

PDI 使用了下面的技术来提高性能:

1. 数据库连接池。

2. 多线程并发进行数据转换: 转换步骤是并发执行的,使用生产者/消费者的模式,每个步骤由一个线程来执行,当前步骤将一次处理完的数据放在缓存里,由下一个步骤的线程读取并再处理这些数据。

 查看全文
PDI 发表于:2008.07.15 21:31 ::分类: ( PDI 使用 ) ::阅读:(1942次) :: 评论 (5)
===========================================================
如何使用 PDI 和 Oracle CDC 来实现Oracle 数据库向其他数据库的数据同步。
===========================================================

本文讲述如何利用 Oracle CDC 和 PDI 来实现 Oracle 数据库向其他数据源的数据同步。

第一节 介绍Oracle CDC,如果您熟悉 Oracle CDC 可以跳过该节。
第二节 说明如何配置 PDI 里的 Oracle CDC 输入和 Oracle CDC 输出 插件。

 查看全文

PDI 发表于:2008.07.03 18:21 ::分类: ( PDI 使用 ) ::阅读:(2399次) :: 评论 (1)
===========================================================
如何使用 PDI 处理 Excel 中的脏数据
===========================================================

在数据整合过程中,经常可以遇到脏数据,所谓脏数据就是数据格式不符合要求的数据。

脏数据的来源

1. 录入过程中的错误
如将数值型的负号'-'录成了全角状态下下的'-',将小数点'.'录成了句号'。'
如拷贝粘贴的时候将空格、回车、换行等一些不可见字符也同时拷贝过来。
如身份证号码、出生日期、手机号码等有相对固定格式的数据,录入的数据格式不正确。

2. 不同系统之间的差异
有的数据在一个数据库系统下是合法的,而在其它数据库下是非法的,这是由系统之间的差异决定的。
如 MySQL 数据库可以保存 0000-00-00 00:00:00 时间戳类型的数据,而对于其他的一些数据库而言,则不能保存这样的时间数据。
如 SQLServer 数据库在汉字字符串中可以存在半个汉字,而有的数据库系统,在遇到半个汉字时会认为是非法数据。
如 不同的数据库数据类型的最大长度、精度、刻度都是不同的。

对于一些录入时检查比较严格的应用系统来说,脏数据产生的可能性小一些。
但是对于一些录入时检查不严格,甚至没有检查的系统来说,产生脏数据的可能性是很大的,如文本文件、EXCEL 文件。

脏数据的问题太广泛,本文主要谈一下如何使用 PDI 处理 Excel 中的脏数据。

 查看全文
PDI 发表于:2008.06.26 17:31 ::分类: ( PDI 使用 ) ::阅读:(1537次) :: 评论 (0)
===========================================================
关于资源库
===========================================================

资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中。资源库可以是各种常见的数据库,用户通过用户名/密码来访问资源库中的资源,默认的用户名/密码是admin/admin

 查看全文
PDI 发表于:2008.06.13 16:38 ::分类: ( PDI 使用 ) ::阅读:(57789次) :: 评论 (6)
===========================================================
记录集连接步骤
===========================================================

该步骤就是将两个表或记录集进行连接。可选的连接方式有

INNER:内连接

 查看全文
PDI 发表于:2008.06.13 16:33 ::分类: ( PDI 使用 ) ::阅读:(653次) :: 评论 (0)
===========================================================
合并记录步骤
===========================================================

该步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。

需要设置的参数:

 查看全文
PDI 发表于:2008.06.13 16:28 ::分类: ( PDI 使用 ) ::阅读:(1217次) :: 评论 (0)
===========================================================
行转列步骤
===========================================================

行转列步骤实际上就是生成所谓的透视表(pivoted table)的步骤,在直观上也就是将属于同一组的多行数据变为一行数据。

 查看全文
PDI 发表于:2008.06.13 16:26 ::分类: ( PDI 使用 ) ::阅读:(1607次) :: 评论 (2)
===========================================================
数据库查询步骤
===========================================================

该步骤可以根据数据流里的数据来查询数据库表里的数据,并得到数据表里的指定字段。查询得到的字段也作为数据流里的字段,并转到下一个步骤。

 查看全文
PDI 发表于:2008.06.13 16:24 ::分类: ( PDI 使用 ) ::阅读:(1299次) :: 评论 (0)
===========================================================
表输入步骤
===========================================================

表输入是从一个数据库表或数据库视图中获得数据。在表输入步骤里要选择数据库和数据库里的某个表或视图。也可以直接输入SELECT 语句来获得数据。

配置窗口中选项说明:

 查看全文
PDI 发表于:2008.06.13 16:20 ::分类: ( PDI 使用 ) ::阅读:(1773次) :: 评论 (1)
===========================================================
JavaScript 转换步骤
===========================================================
Kettle 里的 JavaScript步骤 是一个非常重要的转换步骤,一般来说其他步骤搞不定的事情,都可以由它来解决。

JavaScript步骤里使用的脚本是 Mozilla 的 Rhino,Rhino 是一个很流行的脚本语言。正因为它的出色,所以被 JDK 1.6 收编了,换了一身行头变成 javax.script 包了。不过 Mozilla 还一直在开发Rhino ,最近的一个 Realease1.7 是 08年3月份发布的。Rhino 作为一种脚本语言要遵守脚本语言的标准,对 Rhino 或脚本语言不熟悉的朋友可以参考下面的几个连接

Rhino介绍
javaScript 介绍
javaScript 规范


我们来看看 Kettle 里的 JavaScript 步骤怎么使用。
 查看全文
PDI 发表于:2008.06.13 16:13 ::分类: ( PDI 使用 ) ::阅读:(1314次) :: 评论 (1)
===========================================================
Excel 输入步骤
===========================================================

Excel 输入步骤用于从Excel 文件中按照指定的数据类型和格式获取数据。Excel输入步骤的设置包括五个部分:

1. 文件

 查看全文
PDI 发表于:2008.06.13 16:06 ::分类: ( PDI 使用 ) ::阅读:(1875次) :: 评论 (2)
===========================================================
PDI(Kettle) 是什么?PDI(Kettle) 都能做什么?
===========================================================

PDI(Kettle) 是什么?

PDI(Kettle) 是一款开源的、元数据驱动的 ETL (数据的抽取、转换、加载)工具,是开源 ETL 工具里功能比较强大的一个。

 查看全文

PDI 发表于:2008.06.03 17:13 ::分类: ( PDI 使用 ) ::阅读:(2183次) :: 评论 (0)
===========================================================
文本文件输入步骤
===========================================================
从文本文件中获得数据,常见的文本文件包括csv 、txt、文件等。用户要在该步骤指定文件名、文件内容、错误处理方式、过滤器、字段等项目。

参数说明:
 查看全文
PDI 发表于:2008.06.03 11:30 ::分类: ( PDI 使用 ) ::阅读:(940次) :: 评论 (0)
自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
Blog信息
网站链接...