前言
需求: 数据库存在一个信息表,每天都在记录信息,数据量大,每天创建一张表存储。 表名每天都在变,需要从当天的表拿到信息同步到指定数据库。
预定格式: yyyyMMdd_tableName( 20200202_abcd )
本次测试环境:
|
|
---|
系统 | Windows10 | 软件版本 | kettle 7.1.0.0-12 | MySQL驱动 | mysql-connector-java-8.0.19.jar |
动态表名查询数据
- 第一个转换设置表名为变量
- 第二关转换拿到变量带入sql查询出数据
一、获取表名
实现步骤如下:
- 新建一个转换getTableName,拖入
获取系统信息 ,字段选择 ,设置变量
-
打开 获取系统信息 编辑界面,填写名称 ,点击类型 选择要获取的信息类型 -
打开字段选择 ,选择元数据 ,设置字段属性 -
打开设置变量 ,填写相关信息,也可以点击获取字段 自动填写字段信息
表名转换 到此结束。
二、根据表名更新数据
实现步骤如下:
-
打开表输入 ,选择数据库,填写sql语句,使用之前设置的${TODAY} 变量,替换SQL语句里的变量 勾选上,否则变量 无法生效 -
打开插入/更新 ,指定目标表 ,填写查询关键字 ,填写更新字段
根据表名更新数据转换 到此结束。
三、作业执行转换
- 新建一个作业autoTable,拖入
START ,先调用获取表名 转换,然后调用根据表名更新数据 转换,最后拖入成功
设置如下:
-
拖入START -
拖入转换,编辑获取表名转换 的作业项名称,选择要执行的转换文件getTableName,其它默认 -
拖入转换,编辑根据表名更新数据转换 的作业项名称,选择要执行的转换文件autoQuery,其它默认 -
拖入成功 -
作业保存,运行。
到此,动态表查询结束。
|