如何比较表格中的数据(操作前后)?

时间:2011-09-12 09:53:42

标签: sql database oracle diff compare

是否有任何免费工具或方法可以了解数据库表中的变化?

4 个答案:

答案 0 :(得分:5)

您可以在更新前复制一份

CREATE TABLE t2 AS SELECT * FROM t1

运行您的更新

然后显示差异

用它来显示更新:

SELECT * FROM t1
MINUS
SELECT * FROM t2

使用它来显示删除:

SELECT * FROM t2
WHERE NOT EXISTS(SELECT 1 FROM t1 WHERE t1.primary_key = t2.primary_key)

最后这个检查记录总数是否相同

SELECT count(*) FROM t1

SELECT count(*) FROM t2

注意:如果有其他会话更新t1,可能很难发现您的更新。

答案 1 :(得分:0)

我过去曾经非常成功地使用过Toad(对于Schema和Data)。我发现它也与Oracle兼容。

答案 2 :(得分:0)

尝试 liquibase ,它为数据库提供版本控制机制。

答案 3 :(得分:0)

触发器确实应该避免但是......

如果您处于非生产环境中,则可以设置触发器以执行对新表的记录。你需要5个这样的字段:

LogTime DateTime;
Table   Varchar2(50); -- Table Name
Action  Char;         -- Insert, Update or Delete
OldRec  Blob;         -- Concatenate all your field Values
NewRec  Blob;         -- Ditto

美丽之处在于,您可以将给定时间跨度内的所有OldRecs和NewRecs选择为文本文件。比较工具将通过突出显示您的更改来帮助您。

任何帮助?