mysql - 如何使用 pentaho 数据集成获取唯一记录

标签 mysql sql-server pentaho kettle pentaho-design-studio

我在 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 获取 MAX timestamp
    • 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/

相关文章:

javascript - Highcharts 从数据库访问所有记录

sql - 带有 order by 和 where 子句的内连接

c# - 创建数据库 - 如何找到默认数据目录?

sql - sql查询中的总行数---sql server 2008

java - Kettle 步骤中的 ClassCastException

reactjs - tomcat apache 8 服务器上的 Pentaho API(端口 - 8080)在通过不同的 Web 应用程序(react JS,端口 - 3000)调用时会出现 COR 问题

php - 将 SQL 查询设置为等于数组

mysql - 如何输入区号和国家代码

php - 将 JSON 与 MySQL 数据库进行比较以查找已删除的记录

pentaho - Pentaho PDI 中的迁移转换