【发布时间】:2010-06-11 02:38:34
【问题描述】:
我正在研究从 db1 (Oracle) 到 db2 (Sybase) 的内部 ETL 解决方案。我们需要将数据增量(更改数据捕获?)传输到 db2。
我只有表的读取权限,所以我不能在 Oracle db1 中创建任何表或触发器。
我面临的挑战是,如何在 Oracle 中检测记录删除?
我能想到的解决方案是使用额外的独立/嵌入式数据库(例如 derby、h2 等)。这个db包含2个表,分别是old_data,new_data。
old_data 包含 Oracle 中感兴趣的 tahle 中的主键字段。
每次 ETL 流程运行时,new_data 表都将填充 Oracle 表中的主键字段。之后,我将运行以下 sql 命令来获取已删除的行:
SELECT old_data.id FROM old_data WHERE old_data.id NOT IN (SELECT new_data.id FROM new_data)
我认为当数据量变得非常大时,这将是一项非常昂贵的操作。你有更好的想法吗?
谢谢。
【问题讨论】: