Kettle批量操作流程使用(二)---多个数据源单表批量操作

上一篇博客介绍了本次操作的一些需求和预研思路,并且对第一种方式做了测试,现在将对第二种方式做测试。虽然在网上有不少关于动态链接库的文章,但是不少是操作kettle文件,或者通过脚本去按照一定规则生成变量。好像并不是很适合我自己的任务思路,因此在借鉴他们的思路的基础上,通过多次测试,终于走通了动态链接数据源的数据抽取,为了方便一步一步的递进,本次选择了一个数据较少的表来测试,具体步骤详见下文。

   (1)单个数据源多表批量操作:每次只连接一个数据源,把表名作为变量,维护一个任务抽取一个用户节点的所有数据

   (2)多个数据源单标批量操作:动态链接多个数据源,每个数据源只对一个表做数据抽取

   (3)多个数据源多表批量操作:动态链接多个数据源,每个数据源所有表做数据抽取

1.1 持久化数据源信息

因为我们要做批量数据源的数据迁徙,因此可以将多个数据库的数据源链接信息先保存在表里,或者保存在其他形式的文件里,方便我们去到数据。为了后续扩展方便,管理方便,我将数据源链接信息放在表里。同时为了能一条一条的取出数据源,我定义了一个标志字段id,可以通过这个id来获取一条条的记录。持久化信息如下:

CREATE TABLE "public"."t_cce_jdbc" (
"id" varchar(100) COLLATE "default",
"jdbc_name" varchar(255) COLLATE "default",
"jdbc_host" varchar(255) COLLATE "default",
"jdbc_username" varchar(255) COLLATE "default",
"jdbc_pasword" varchar(255) COLLATE "default",
"jdbc_database" varchar(255) COLLATE "default",
"jdbc_port" varchar(10) COLLATE "default")
WITH (OIDS=FALSE)


1.2 设置数据库链接id为变量

1) 新建一个transfer,命名为getIds,包含三个步骤如图所示:

     

2) 设置表输入的数据库源设置

 

3) 设置表输入的获取数据脚本,这里就是从持久化的数据中获取到数据,为了后续的每次执行一条数据库脚本,这里就先把id获取出来,左后后续获取数据库链接的一个参数。


4) 将设置选择字段,因为这里只有一个id字段,因此只要列一个字段即可,暂时将其设置为id_param


5) 将三个步骤联结起来,完成单钱transfer的操作,如下图

1.3 获取数据库链接id信息

1) 新建transfer,命名为setIdparam,包含如下两个步骤

2) 设置从结果获取的记录,将上一个保存到结果的数据拿出来

3) 将获取的记录结果保存到变量中,并将变量名统一改为大写ID_PARAM

4) 将两个步骤联结起来,并保存

1.4 设置数据库链接信息为结果

1) 新建transfer,命名为getJDBC,包含三个步骤,如下图:

2) 设置数据库链接,这里的链接跟获取id的链接是一样的,如下图:

 

3) 设置数据库脚本,根据上一步的ID参数获取每一次要获取的数据库链接,注意要勾选上允许替换SQL中的变量

4) 设置选择字段,根据上一个脚本查出来的字段,选择将要设置为变量的字段,并加上一个参数标识。

5) 设置变量将选取的字段设置为变量

6) 将三个步骤联结起来并保存

1.5 抽取数据库数据

1) 新建transfer命名为getDatas,包含两个步骤,如下图所示:

2) 设置表输入的数据库链接,因为这里的数据库链接是从上一个的变量找那个获取,因此这里的链接信息基本上都是用变量代替,如下图所示:

 

3) 设置数据库抽取脚本,这里只用一个表做抽取,如下图所示:

4) 设置表输出的目标链接信息,如下图所示:

5) 设置目标表,根据上一步设置的表输入的脚本中表名,选择目标表

6) 将两个步骤链接,保存。

1.6 建立数据库抽取子Job

1) 新建Job,命名为jobData,包含如下三个步骤:

2) 设置第一个转换,从文件中选择之前步骤设置的setIdParam绑定,如下图:

3) 设置第二个转换,从文件中获取之前的步骤setJDBC绑定,如下图:

4) 设置第三个转换,从文件中获取之前设置的getDatas绑定,如下图

5) 连接三个步骤,并保存,如下图

1.7 建立数据库抽取整个Job

1) 新建一个job,命名为jobAll,包含如下三个步骤

2) 设置第一个转换,从文件中选择前面设置的getIds绑定,如下图所示:

3) 设置子job,选择之前步骤设置的jobDatas绑定,并在高级中勾选每个输入执行一次,如下图所示:

  


4) 链接job中的所有步骤,并保存。

1.8 执行任务并查看结果

数据源1数据:22条

数据源2数据:54条

执行后目标库数据:76条

通过实验可以发现两个数据源的数据都已入库。

本次博客的数据抽取 脚本下载地址




  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值