kettle复杂实战例子github:点击前往


1. 需求说明

源库里有三张表,分别是cust(客户表),account(账户表),trade(交易表),现在需要在目标库的trade_all(交易详细表)里存储每一笔交易的详细信息。

2. 准备数据库

2.1 cust(客户表)

字段名 类型 说明 备注
custno varchar 客户编号  
custname varchar 客户名  
custid varchar 客户证件号  
custtype varchar 客户类别

1:对公客户

2:对私客户

2.2  account(账户表)

字段名 类型 说明 备注
acctno varchar 账户号  
custno varchar 客户编号  
amt double 余额  

2.3 trade(交易表)

字段名 类型 说明 备注
tradeid varchar 交易流水号  
acctno varchar 账户号  
amt double 交易金额  

2.4  trade_all(交易详细表)

字段名 类型 说明 备注
tradeid varchar 交易流水号  
acctno varchar 账户号  
amt double 交易金额  
custno varchar 客户编号  
custname varchar 客户名  
custid varchar 客户证件号  
custtype_cn varchar 客户类别解释

对公客户交易 / 对私客户交易

value_ varchar 交易解释

这是一笔对公客户发生的交易

/

这是一笔对私客户发生的交易

3. 创建转换

转换的最终流程图:

Kettle之多表联合查询实战

3.1 创建转换和DB连接

我为了方便,把所有表都放在一个库里,所以只了一个数据库连接,如果源数据库和目标数据库不同,就配置两个数据库连接。

注意点:这里没配置好会出现中文乱码问题,详见我之前的文章:解决kettle问题之中文乱码

Kettle之多表联合查询实战

3.2 trade表输入

新建表输入

得到trade表里的所有数据。

Kettle之多表联合查询实战

3.3 account表查询

新建数据库查询

根据trade表里的acctno,去查account表

关键字段比较是acctno,查询返回字段是custno

Kettle之多表联合查询实战

3.4 cust表查询

新建数据库查询

根据account表里的custno,去查cust表

关键字段比较是custno

Kettle之多表联合查询实战

3.5 根据客户类型,在字段里写入对应的语句

3.5.1 过滤记录

新建过滤记录

过滤出对公客户和对私客户。

Kettle之多表联合查询实战

3.5.2 对公客户和对私客户

下面以对公客户为例,对私客户就是把 公 改私。

新建javaScript代码

Kettle之多表联合查询实战

新建增加常量

Kettle之多表联合查询实战

3.6 trade_all表插入 / 更新

新建插入/更新

关键字段比较 tradeid

Kettle之多表联合查询实战

至此,多表联合查询实战就结束了,例子的地址在最上方。

相关文章: