分享

kettle实现从mongo增量到Postgresql

本帖最后由 J20_果农 于 2016-10-2 16:15 编辑
总体实现:
需要创建一个作业 j_test_d, 两个转换T_增量临时数据_D,  T_增量至PG数据表_D,在j_test_d中设置两个用于接收开始日期和结束日期的参数dt1, dt2
加载策略: 按主键删除后增量追加记录
创建步骤:
1.首先创建转换 T_增量临时数据_D
3.png

mongo控件详细设置

设置连接mongo的 IP 和 端口号
4.png

设置mongo数据库名,集合名
5.png


设置查询条件(这里取前一天的日期)
6.png

获取mongo文档中的数据

7.png

字段选择中获取所有字段,根据需要可将里面的字段转换成不同类型,如字符串转int

表输出详细设置
8.png

转换中输出日志的设置
9.png

运行转换, 在弹出的运行界面变量栏中输入dt1, dt2 并输入对应的日期,确定

10.png


运行成功后,效果如下:
11.png

到这一步,就完成了从mongo 中抽取增量数据到postgresql 临时表中。
在这里讲一下平时开发过程中数据为什么先加载到临时表,而不是直接加载到test1中。
这是因为我们采用的加载方式是先按主键删除后追加增量记录,所有处理过程必须先删除test1中的主键
而删除test1中的主键数据如果直接从mongo直接传过来,作为删除test1表里面的条件参数这样的话kettle实现过程速度特别慢
主要原因是1.kettle传参数的处理只能一行一行执行,比批量删除慢很多。2.垮库之间网络传输也会影响速度
而采用先将数据加载到临时表,删除主键时,即可以实现批量删除,又避免了垮库造成的网络耗时。
下一步将实现从临时表把数据灌入到表test1中实现最终的数据增量加载

2.创建转换 T_增量至PG数据表_D

12.png

删除主键脚本设置:
13.png

表输入设置
14.png

表输出设置
15.png

3.创建一个运行作业,将两个转换串行起来执行

17.png

给作业设置参数
在这里设置参数,一般是在kettle服务器端linux系统上使用shell调用kitchen脚本时,传给kettle参数用的
16.png

下面本地执行,手工输入日期参数值,运行
18.png

运行结束
19.png









本帖被以下淘专辑推荐:

已有(1)人评论

跳转到指定楼层
haibo18 发表于 2016-10-2 11:05:53
感谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条