Comparing two database tables of identical structure is "simply" a matter of using the right SQL statements. Provided your database can handle joins of two tables of approximately the same size:
SELECT 'different', a.field1, b.field1, a.field2, b.field2
FROM a, b
WHERE a.key1 = b.key1
AND a.key2 = b.key2;
SELECT 'missing in b', a.*
FROM a LEFT OUTER JOIN b
ON a.key1 = b.key1, a.key2 = b.key2
WHERE b.key1 IS NULL AND b.key2 IS NULL
The approach is basically the same as doing it with Perl, by looking at your tables as two hashes, indexed by their keys. Most likely, you will want to treat all column as the key columns in your comparison. |