2 Tabellen aus 2 Datenbanken miteinander vergleichen

terdit

Neues Mitglied
Hallo zusammen,

ich habe folgendes Problem:

Ich muss die Tabelle A1 aus Datenbank A, mit der Tabelle B1 aus der Datenbank B vergleichen.
Als Ergebnis möchte ich eine Datei haben die anzeigt,
  • Einträge die in beiden Tabellen sind, aber unterschiedliche Werte haben
  • Einträge dir nur in A1 vorhanden sind
  • Einträge die nur in B1 vorhanden sind

Das Problem ist, dass eine Eintrag aus der Tabelle auch schon mal ca. 5 MB groß sein kann.

Die Frage ist nun: Wie löse ich das Problem am effizientesten?

Gruß Dennis
 

stone71

Mitglied
Also die Beschreibung finde ich nicht ganz ausreichend! Zuerst einmal benötigt Du aus meiner Sicht viel Speicher oder möglicherweise auch eine temporäre Tabelle auf eine der beiden Datenbanken.
Des Weiteren stellen sich mir einige Fragen:
Sind die Tabellen absolut identisch in ihrem Aufbau?
Haben sie also den gleichen primären Schlüssel?
Wenn dies gklärt ist, dann kann man schon einmal davon ausgehen, ob man das gleiche Objekt ganz einfach verwenden kann.

Als ersten Ansatz würde ich mir ein Objekt in Java bauen, welches die Informationen enthält, die gleich sein sollen, damit definiert ist, wann ein Datensatz dem Datensatz der anderen Tabellen entspricht. Dies würde ich in der equals Methode der Objektklasse auch so definieren.
Verarbeitungsschritte:
1. Wenn ich jetzt an die Verarbeitung gehe, dann sollte man die eine Tabelle einlesen und als Liste dieser Objekte anlegen.
(Hier vielleicht noch ein boolean für Tabelle1 und Tabelle2 anlegen.)
2. Danach eine Datenbankabfrage und holen der Sätze der 2.Tabelle
3. Jetzt die Datensätze prüfen, ob diese schon in der Liste sind, dann nur noch den boolean setzen, ansonsten den jeweiligen Datensatz der Tabelle hinzufügen.

Zum Schluss besitzt man eine Liste, wo alle vorkommenden Datensätze der beiden Tabellen vorhanden sind. Über die Werte in den beiden boolean kann man dann noch feststellen, in welcher der beiden Tabellen der DS existiert!

Wenn Du hier noch Fragen oder dies genauer gemacht oder besprochen haben möchtest, dann kannst Du Dich noch einmal melden.
 

stone71

Mitglied
Wie schon einmal auch in anderen Eintragungen formuliert: "Viele Wege führen nach Rom!"
Allerdings gebe ich zu bedenken, dass es hier auf die Aufgabenstellung ankam und da denke ich, sollte man sich überlegen, welche Vorgehensweise man wählt!? Augenblicklich kann man davon ausgehen, dass es sich um zwei Tabellen in zwei unterschiedlichen Datenbanken handelt und diese möglicherweise auch noch auf zwei unterschiedlichen Servern existieren, wo auch ein key nich unbedingt identisch ist und es um den Vergleich von Inhalten geht...
Wenn ich mir so überlege, dann gibt es hier immer auch die Alternative dies in einem plsql umzusetzen, aber dies wird auch kompliziert und da ich mich hier in einem Java-Forum befinde, beschreibe ich zuerst einmal die Java-Lösung. Die Gesamtheit müsste ich sowieso in Objekte lesen, dementsprechend bin ich mir noch nicht sicher, was effizienter ist?

Ich gebe Dir also recht, es würde auch direkt über die Datenbanken gehen, aber ...
 

terdit

Neues Mitglied
Schon mal danke für eure Antworten.

Zu den Tabellen:
Sie sind beide exakt gleich aufgebaut. Ich hab mich oben übrigens vertan. Es handelt sich nicht um den Primary Key, sondern um ein normales Feld, welches sich aber als Index eignet.
Beide Tabellen liegen auf unterschiedlichen Servern.
Es geht darum den Datenbestand von Datenbank A (Testsystem) mit dem in der Datenbank B (Produktion) abzugleichen und festzustellen wo Änderungen gemacht wurden bzw. ob Einträge von A nach B nicht übernommen wurden.

Meine bisherige Idee wäre:
-Hole aus Tabelle A und B jeweils das Index Feld und speichere es in je einer Liste
-Vergleiche beide Listen und:
--Datensätze die nur in einer Liste sind, will ich dann schon in eine Datei schreiben mit dem Hinweis woher sie kommen

Ziel soll eine Liste sein mit Indexen die in beiden Tabellen vorkommen.

Mit dieser Liste hole ich mir dann aus der Datenbank die zugehörigen Daten und vergleiche beide wieder.
Gleiche Datensätze lösche ich aus der Liste, ungleiche möchte ich auch in eine Datei schreiben

Ich hoffe das wurde jetzt etwas klarer ;)

Wie kann ich denn sowas direkt in der Datenbank machen? Ich bin ja auf zwei verschiedenen Servern...

Gruß Dennis
 

stone71

Mitglied
So jetzt versuche ich noch einmal die Schritte weiterzugeben, die ich mir vorstellen würde.
Aus meiner Sicht brauchst Du nur eine Liste, in der Du Objekte speicherst.
Objekt:
- key
- boolean tabelle1
- boolean tabelle2

1. Du füllst jetzt eine Liste Deiner Objekte mit dem select auf Tabelle1 und setzt dabei den boolean tabelle1 auf true
2. jetzt ein select auf tabelle2 und beim lesen der Daten vergleichst Du mit Deiner Liste, ist ein key vorhanden, dann setze boolean tabelle2 auf true. Ist der Datensatz nicht vorhanden, dann lege in Deiner Liste ein neues Objekt an mit dem key und boolean tabelle 2 auf true.

In diesem Moment kannst Du die Daten weiterverarbeiten. Hier stellt sich jetzt noch die Frage, ob Du die Daten immer auf beiden Systemen gleich halten möchtest und welche der Server master und welche Slave ist.

Genauer kann man den Regelbaum nur aufstellen, wenn alle Infos vorliegen.

Bei der Lösung in der Datenbank kommt es darauf an welche Möglichkeiten über die Datenbank gegeben werden.
 

OSBI_Fan

Mitglied
Hallo terdit,

Die Antwort hängt von mehreren Faktoren ab:

  1. Verwendetes Datenbanksystem
  2. Mengengerüst im Verhältnis zum verfügbaren Speicher (RAM)
  3. Verfügbare Indizes
  4. Aktualität der Statistiken
  5. Hardware (Geschwindigkeit und Anzahl der Prozessoren, RAM Durchsatz, Festplatten Durchsatz)
Die Inhalte (Zeilen) von zwei Tabellen vergleichen - SQL

Beispiel: Hier zwei Tabellen in verschiedenen Datenbanken:

SQL:
SELECT * FROM
(
 SELECT 'DB_ENTWICKLUNG' DB_NAME, d.* FROM
 (
  SELECT * FROM FOO.BAR         MINUS
  SELECT * FROM FOO.BAR@DB_PRODUKTION
 ) d
 union
 SELECT 'DB_PRODUKTION' DB_NAME, d.* FROM
 (
 SELECT * FROM FOO.BAR@DB_PRODUKTION  MINUS
 SELECT * FROM FOO.BAR           
 ) d
)
;

MINUS
Listet die Werte aus der ersten Tabelle abzüglich der Werte die auch in der zweiten Tabelle sind.

SELECT feldname FROM FOO
MINUS
SELECT feldname FROM BAR;

Oft will man alle Spalten auswählen und (eine) bestimmte als erstes sehen. Entweder werden dann alle Spalten angegeben, oder es wird weiterhin * verwendet und man listet eine der vorhanden Spalten erneut auf. Damit das funktioniert, muss man der Tabelle von der man selektiert einen Alias mitgeben und der doppelten Spalte einen neuen Namen.

Grüße,

OSBI_Fan

OSBI = Open Source Business Intelligence
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
M Sql Tabellen erstellen Datenbankprogrammierung 3
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
C Mapping mit Annotations von 2 Tabellen Datenbankprogrammierung 22
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
feinperligekohlensaeure MySQL Dynamische Tabellen. Wie kann man es besser machen? Datenbankprogrammierung 3
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
D Count(*) auf 2 Tabellen anwenden Datenbankprogrammierung 7
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
V SQLite 2 Tabellen vergleichen und nur Unterschiedliche Sätze rausgeben. Datenbankprogrammierung 31
F Tabellen verbinden Datenbankprogrammierung 13
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
D umschalten zwischen verschiedene Tabellen Datenbankprogrammierung 1
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
T Ähnliche Wrapperklassen + DB-Tabellen Datenbankprogrammierung 1
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
T Tabellen Alias Datenbankprogrammierung 7
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
J Tabellen in Tabellen finden Datenbankprogrammierung 4
S versionierte Tabellen Datenbankprogrammierung 2
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
E Tabellen nacheinander auslesen Datenbankprogrammierung 10
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
K SQL tabellen auswahl in jfreechart Datenbankprogrammierung 2
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
H Fortlaufende Nummerierung innerhalb mehrerer Tabellen Datenbankprogrammierung 4
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
F Einzelne Sql- Tabellen sichern (lokal) Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
Guybrush Threepwood Nachträgliches Ändern von Variableneigenschaften in (gefüllten) Tabellen Datenbankprogrammierung 3
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
A Datenbankzugriffe, mehr Tabellen Datenbankprogrammierung 12
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
X Abfrage über 2 Tabellen mit Tücken Datenbankprogrammierung 3
G verbindung 2er Tabellen Datenbankprogrammierung 3
M Auswerten über drei Tabellen Datenbankprogrammierung 2
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
M insert in 2 tabellen Datenbankprogrammierung 7
MQue Metadaten für Tabellen in der Datenbank Datenbankprogrammierung 5
D aus mehreren sql tabellen matchen und sortieren Datenbankprogrammierung 6
G 2 Tabellen zusammenfügen wie? Datenbankprogrammierung 8
G Tabellen-Dokument als Datenbank Datenbankprogrammierung 2
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
ARadauer tabellen kommentar ausgeben Datenbankprogrammierung 2
S Mysql abfrage über 2 tabellen. Datenbankprogrammierung 10
Y Hibernate - Werte aus 2 Tabellen laden Datenbankprogrammierung 29
S Postgres und die Ursprungstabelle bei vererbten Tabellen Datenbankprogrammierung 4
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3

Ähnliche Java Themen


Oben