天天看点

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

**基本思路:

网上查了半天没有一个能实现的

根据部分网友文章得到的思路

先构造一个分页列表页,在按行执行这个分页计算数据

全图预览**

kettle中流里面字段null和空字符的解决方案:可以直接在c盘搜一下

在C:\Users\用户名.kettle\kettle.properties

添加下面配置

KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y

在测试中出现了内存溢出:Spoon.bat将内存配置调大 不要过大 根据本机适度调整

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

开始 测试执行一次

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

设置变量(提取到的变量,表名和pagesize 有修改 直接启动是改一下就可以了)

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

第一个转换:计算分页数量(其他项默认 只添加这2个变量)

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

新建一个转换 命名自定义 前面已经定义了pagesize 这步主要获取pagenum

通过oracle 表输入 获取总数 total ÷ pagesize 向上取整 = pagenum

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

这里第一次用需要进行数据库配置

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

**设置变量 **

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

将得到的pagenum复制到结果里 以供后续使用

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

第一个转换完成 开始第二个转换

将参数向下传递

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

第二个转换主要功能是 构造peage页的数据 并将结果复制

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

获得page

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

新建个作业,注意:执行每一行

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

在作业中新建转换

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

获取上步骤的结果

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

设置变量,添加表输入

**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)tablea​liasWHEREtablea​lias.rowno>=(({NEWPAGE}-1)${PAGESIZE}+1)**

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

注意:简易转换会将值编码 不可读了

从步骤插入数据,不用勾,不然会有问题,列不可用

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

可加日志 或写出到文件 查看内容

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

es插入 需要id 有的不需要

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

先测试链接 7.x的kettle 可以换链接es插件 支持6.x版本es

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

下一步需要配置es服务的地址及端口9300

如果上一步的查询 不能获取字段 这一步需要手动获取下 把没用的去掉

最后在配置下es 名称 看配置文件

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

问题: 我是了插入es数据应该是正常的

如果要输出文件 可能存在问题

我遇到的是 循环是 第一次执行的不是第一页 说不好第几页 导致部分数据重复 而最后一页遍历不到

可以把分页数据+1 就都可以遍历到 但是还会有重复数据

后查看别人例子 将这一个转换 拆成2个就好了 这里可能和执行顺序有关 或者并行执行有关 不太清楚

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

转换-设置变量

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

转换-导出数据

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

启动时 可以配置表名及每页数量 选择日志级别 开始吧

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

设置为错误日志输出效果为 可根据需要自行配置

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

继续阅读