Ich habe zwei ähnliche Tabellen in Oracle in zwei verschiedenen Datenbanken. Beispiel: Mein Tabellenname ist EMPLOYEE und der Primärschlüssel ist die Mitarbeiter-ID. Die gleiche Tabelle mit den gleichen Spalten (sagen wir 50 Spalten sind avlbl in zwei Datenbanken und zwei Datenbanken sind verknüpft.
Ich möchte diese beiden Tabellen spaltenweise vergleichen und herausfinden, welche Datensätze nicht übereinstimmen. Ich möchte die spezifische Spalte in jeder Zeile in zwei Tabellen, die nicht übereinstimmen.
Als eine Alternative, bei der jede Tabelle zweimal vollständig durchsucht wird und Sie auch auf einfache Weise feststellen können, welche Tabelle mehr Zeilen mit einer Kombination von Werten als die andere hatte:
%Vor%Kredit geht hier: Ссылка
Versuchen Sie, ein Drittanbieter-Tool zu verwenden, z. B. SQL Data Examiner , das Oracle-Datenbanken vergleicht und Ihnen Unterschiede anzeigt.
>Es wird nicht schnell sein, und es wird eine Menge für Sie geben (außer Sie generieren die SQL von user_tab_columns), aber hier ist, was ich verwende, wenn ich zwei Tabellen Zeile für Zeile und Spalte vergleichen muss -mit-Spalte.
Die Abfrage gibt alle Zeilen zurück, die
sind(gemeinsame identische Zeilen werden ausgeschlossen).
"PK" ist die Spalte (n), aus der Ihr Primärschlüssel besteht. "a" wird A enthalten, wenn die aktuelle Zeile in table1 existiert. "b" wird B enthalten, wenn die aktuelle Zeile in Tabelle 2 existiert.
%Vor%Bearbeiten Beispielcode hinzugefügt, um den im Kommentar beschriebenen Unterschied anzuzeigen. Wenn einer der Werte NULL enthält, ist das Ergebnis anders.
%Vor% Die Verwendung des minus
Operators funktionierte, aber es dauerte auch länger, das auszuführen, was nicht akzeptabel war.
Ich habe eine ähnliche Art von Anforderung für die Datenmigration und ich habe den Operator NOT IN
dafür verwendet.
Die modifizierte Abfrage lautet:
Diese Abfrage wurde schnell ausgeführt. Sie können auch eine beliebige Anzahl von Spalten in der Select-Abfrage hinzufügen. Der einzige Haken ist, dass beide Tabellen die exakt gleiche Tabellenstruktur haben müssen, damit dies ausgeführt wird.
Tags und Links sql database oracle oracle10g database-design