我在 sql 中有包含状态、区域、地区、时间戳列的 log_table
服务器。
ID state region district timestamp
-- ----- ------ -------- ---------
1 GJ RE056 DI137 2014-02-05 09:00:00.257
2 CA RE027 DI154 2014-02-04 14:00:00.183
3 GJ RE056 DI137 2014-12-09 16:00:00.257
我想将这些记录加载到 mysql 中具有唯一记录的另一个表中,并且在将数据从 sql server 加载到 mysql 时,现有数据不应插入到 mysql 中的新表中,只能每天更新 记录应加载到没有重复记录的新表中。在这个问题上帮助我如何使用 pentaho 数据集成。
最佳答案
我假设 timestamp
列代表来自源数据库 (sql server) 的一行的 last_updated_timestamp
。
如果您的目标是每天运行一次转换,并且您希望只有来自源数据库的新的或更新的
记录被加载到目标(mysql)数据库,您需要存储时间戳
到目标数据库(例如表 log_target
),转换步骤可以是:
- 表输入(目标数据库):从表
log_target
获取 MAXtimestamp
。SELECT COALESCE(MAX(timestamp), '1970-01-01 00:00:00') AS max FROM log_target
- 表输入(源数据库):从
log_table
中选择更新的数据- 步骤设置:插入数据步骤(获取上一步的数据);替换脚本中的变量? (正确)
SELECT * FROM log_table WHERE (timestamp > ?)
- 处理您的数据
- 表输出或插入/更新(目标数据库):将输出数据存储到
log_target
表。不要忘记存储timestamp
值。
关于mysql - 如何使用 pentaho 数据集成获取唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28338321/