kettle 循环 oracle数据批量入Elasticsearch oracle循环导出数据文件 job循环

**基本思路:
网上查了半天没有一个能实现的
根据部分网友文章得到的思路
先构造一个分页列表页,在按行执行这个分页计算数据

全图预览**

kettle中流里面字段null和空字符的解决方案:可以直接在c盘搜一下
在C:\Users\用户名.kettle\kettle.properties
添加下面配置
KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

在测试中出现了内存溢出:Spoon.bat将内存配置调大 不要过大 根据本机适度调整
在这里插入图片描述

全图预览

开始 测试执行一次
开始 测试执行一次
设置变量(提取到的变量,表名和pagesize 有修改 直接启动是改一下就可以了)
在这里插入图片描述

第一个转换:计算分页数量(其他项默认 只添加这2个变量)
在这里插入图片描述

新建一个转换 命名自定义 前面已经定义了pagesize 这步主要获取pagenum
通过oracle 表输入 获取总数 total ÷ pagesize 向上取整 = pagenum

在这里插入图片描述
这里第一次用需要进行数据库配置
在这里插入图片描述

**设置变量 **
在这里插入图片描述
将得到的pagenum复制到结果里 以供后续使用
在这里插入图片描述
第一个转换完成 开始第二个转换
将参数向下传递

在这里插入图片描述
第二个转换主要功能是 构造peage页的数据 并将结果复制

在这里插入图片描述
获得page
在这里插入图片描述
新建个作业,注意:执行每一行
在这里插入图片描述
在作业中新建转换
在这里插入图片描述

获取上步骤的结果
在这里插入图片描述

设置变量,添加表输入

**oracle分页

SELECT * FROM (SELECT ROWNUM AS rowno, t.* FROM T A B L E N A M E t W H E R E R O W N U M < = ( {TABLENAME} t WHERE ROWNUM <= ( TABLENAMEtWHEREROWNUM<=({NEWPAGE}) P A G E S I Z E ) t a b l e a l i a s W H E R E t a b l e a l i a s . r o w n o > = ( ( {PAGESIZE}) table_alias WHERE table_alias.rowno >= (( PAGESIZE)tablealiasWHEREtablealias.rowno>=(({NEWPAGE}-1)${PAGESIZE}+1)**
在这里插入图片描述

注意:简易转换会将值编码 不可读了
从步骤插入数据,不用勾,不然会有问题,列不可用

在这里插入图片描述
可加日志 或写出到文件 查看内容
在这里插入图片描述

es插入 需要id 有的不需要
在这里插入图片描述

先测试链接 7.x的kettle 可以换链接es插件 支持6.x版本es
在这里插入图片描述

下一步需要配置es服务的地址及端口9300
如果上一步的查询 不能获取字段 这一步需要手动获取下 把没用的去掉
最后在配置下es 名称 看配置文件

在这里插入图片描述
问题: 我是了插入es数据应该是正常的
如果要输出文件 可能存在问题
我遇到的是 循环是 第一次执行的不是第一页 说不好第几页 导致部分数据重复 而最后一页遍历不到
可以把分页数据+1 就都可以遍历到 但是还会有重复数据
后查看别人例子 将这一个转换 拆成2个就好了 这里可能和执行顺序有关 或者并行执行有关 不太清楚

在这里插入图片描述

转换-设置变量
在这里插入图片描述

转换-导出数据
在这里插入图片描述

启动时 可以配置表名及每页数量 选择日志级别 开始吧
在这里插入图片描述
设置为错误日志输出效果为 可根据需要自行配置
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值