Kettle 动态表查询

时间:2024-03-13 12:58:06

前言

需求:
数据库存在一个信息表,每天都在记录信息,数据量大,每天创建一张表存储。
表名每天都在变,需要从当天的表拿到信息同步到指定数据库。

预定格式:
yyyyMMdd_tableName( 20200202_abcd )

本次测试环境:

系统 Windows10
软件版本 kettle 7.1.0.0-12
MySQL驱动 mysql-connector-java-8.0.19.jar

动态表名查询数据

  • 第一个转换设置表名为变量
  • 第二关转换拿到变量带入sql查询出数据
    Kettle 动态表查询

一、获取表名

Kettle 动态表查询
实现步骤如下:

  • 新建一个转换getTableName,拖入获取系统信息字段选择设置变量
    Kettle 动态表查询
  1. 打开 获取系统信息 编辑界面,填写名称,点击类型选择要获取的信息类型
    Kettle 动态表查询

  2. 打开字段选择,选择元数据,设置字段属性
    Kettle 动态表查询

  3. 打开设置变量,填写相关信息,也可以点击获取字段自动填写字段信息
    Kettle 动态表查询

表名转换到此结束。


二、根据表名更新数据

Kettle 动态表查询
实现步骤如下:

  1. 打开表输入,选择数据库,填写sql语句,使用之前设置的${TODAY}变量,替换SQL语句里的变量勾选上,否则变量无法生效
    Kettle 动态表查询

  2. 打开插入/更新,指定目标表,填写查询关键字,填写更新字段
    Kettle 动态表查询

根据表名更新数据转换到此结束。

三、作业执行转换

Kettle 动态表查询

  • 新建一个作业autoTable,拖入START,先调用获取表名转换,然后调用根据表名更新数据转换,最后拖入成功

设置如下:

  1. 拖入START

  2. 拖入转换,编辑获取表名转换的作业项名称,选择要执行的转换文件getTableName,其它默认
    Kettle 动态表查询

  3. 拖入转换,编辑根据表名更新数据转换的作业项名称,选择要执行的转换文件autoQuery,其它默认
    Kettle 动态表查询

  4. 拖入成功

  5. 作业保存,运行。


到此,动态表查询结束。