主页:写程序的小王叔叔的博客欢迎来访****支持:点赞
收藏
关注
本博客内容,实践前,请先逐一浏览,然后再逐一学习。
一、作业、转换图
二、实现步骤思路
1. 安装 kettle elk
**2.**在kettle中 新创建一个“转换”
**3.**根据“转换”创建“作业”
**4.**执行“作业”内容
三、转换图 实现
3.1 主-转换图 :
主要内容本博客中已经编写完毕 ,
【增量】是在原本转换图基础上进行修改
【3.1 转换图解析】:
主要
3.1.1 - 1.连接DB抽取对应学生数据
SELECT * , DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time
from course_issue_detail
where delete_flag='0' and issue_type='1' and create_time > '${createTime}'
-- limit 201,210;
3.1.2 - 2.替换null值
3.1.3 - 3.ESInsert_写入数据
【具体配置 见博客: (原)Windows10 Kettle Spoon 抽取MySQL数据 保存到 本地ES【二】_写程序的小王叔叔的博客-CSDN博客_spoon抽取数据 】
3.2 辅助-转换图
3.2.1 - 修改更新时间
select DATE_FORMAT(max(createTime,'%Y-%m-%d %H:%i:%s')) as createTime from etl_last_timestamp WHERE index_name = 'es_student_sub_test'
update etl_last_timestamp set createTime = '?' where index_name = 'es_student_sub_test'
四、作业图实现
4.1 创建作业图: 主要
4.2.1 - 创建更新表
1.检查表 1.1创建表:
首先要 创建 中间转换时间戳的表 【etl_last_timestamp】,用来保存最新更新替换更新的时间
先检查是否存在,然后进行创建
CREATE TABLE `etl_last_timestamp` (
`createTime` DATETIME(3) NULL DEFAULT NULL COMMENT '抽取的最后的时间戳'
)
COMMENT='记录抽取的最大的时间戳'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
4.2.2 - 2.变量赋值
var prevRow=previous_result.getRows();
if (prevRow == null && (prevRow.size() =0))
{
false;
}else{
parent_job.setVariable("createTime",prevRow);
parent_job.setVariable("size",prevRow.size());
parent_job.setVariable("i",0);
parent_job.setVariable("createTime",prevRow.get(0).getString("createTime",""));
true;
}
4.2.3 - 3.调用变量转换业务
【见本博客 3.2 辅助-转换图】
4.2.4 - 4.循环控制
4.2.5 - 输出记录 / 计数器累加
var list_Tables = parent_job.getVariable("createTime").replace("[","").replace("]","").split(",");
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("createTime")+1);
if( i<size ){
parent_job.setVariable("createTime",list_Tables[i]);
}
parent_job.setVariable("i",i);
true;
遗留问题: 抽取成功后,成功输出到Excel文件中,后期逐步修改整理。。。
五、完成效果
本博客内容整理成资源以上传到【本资源】中:20210511_kettle抽取mysql增量到ES中.zip-项目管理文档类资源-CSDN下载
六、效果
七、连接
基本配置kettle连接mysql
八、配置
九、操作
说明:
配置数据源连接池大小设置,一般都是默认设置,如有特殊需求可以手动修改。
转载声明:本文为博主原创文章,未经博主允许不得转载
⚠️注意 ~
💯本期内容就结束了,如果内容有误,麻烦大家评论区指出!
如有疑问❓可以在评论区留言💬或私信留言💬,尽我最大能力🏃♀️帮大家解决👨🏫!
如果我的文章有帮助到您,欢迎点赞+关注✔️鼓励博主🏃,您的鼓励是我分享的动力🏃🏃🏃~