**基本思路:
网上查了半天没有一个能实现的
根据部分网友文章得到的思路
先构造一个分页列表页,在按行执行这个分页计算数据
全图预览**
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个就好了 这里可能和执行顺序有关 或者并行执行有关 不太清楚
转换-设置变量
转换-导出数据
启动时 可以配置表名及每页数量 选择日志级别 开始吧
设置为错误日志输出效果为 可根据需要自行配置