Zum Inhalt springen

2 Datenbanken vergleichen


lati

Empfohlene Beiträge

Hallo,

ich möchte 2 Datenbanken die sich ähnlich sind , miteinander vergleichen und die unterschiede in einer Protokolldatei ausgeben lassen...

Leider hab ich momentan noch keine richtige Idee , wie ich dies angehen könnte.

Ich möchte kein fertiges Tool dafür haben ;)

Ich hoffe es kann mir jemmand Anregungen geben :)

mfg

Lati

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja du kannst dir mit einem sql befehl (je nach dbms unterschidlich) alle tabellen ausgeben lassen.

- Suche nach gleich bennanten tabellen

- Suche in gleichen tabellen nach gleichen spalten

- suche in gleichen spalten nach den identischen zeilen

Aber mal im ernst um welches dbms handelt es sich und womit willst du das durchführen?

C++ ? Java? C# ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

mit xampp und php..

ich bin noch in der lernphase, also hab noch nicht viel vorher damit zutun gehabt.

wie kann ich dies umsetzen..mit imports oder anderen befehlen..

ich hab 2 datenbanken, die haben bestimmt minimum 20 tabellen...für den anfang wollt ich mir erstmal 2 datenbanken mit jeweils 1 tabelle vornehmen um die grundstruktur zu verstehen.

wie kann ich dies umsetzen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann mich da den Vorrednern nur anschließen, Du musst eben datenbankweise, alle Tabellen, Feldtypen, -längen und -inhalte durchlaufen und gegen die andere Datenbank abgleichen und dann Abweichungen entsprechend protokollieren. Ist recht ineffizient bei großen Datenbanken.

Du baust entsprechend zu beiden Datenbanken via PHP eine Verbindung auf, setzt die entsprechende SQL Statements ab und verarbeitest die Ergebnisse, die Dir geliefert werden. Schau Dir dazu einmal die mysql Funktionen von PHP an und eben den mySQL Syntax (ggf. empfehle ich Dir noch die ADODB Schnittstelle von PHP)

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

das projekt ist wichtig und für sie schule...habe mich mit euren vorschlägen befasst, komme aber nicht weiter.. könnt ihr mir evtl einige beispiel-quellcode-zeilen posten wie man die inhalte von 2 datenbanken vergleicht? :confused:

MfG lati

Link zu diesem Kommentar
Auf anderen Seiten teilen


mysql_connect("localhost","root");

mysql_select_db("scan");

$abfrage = "SELECT * FROM cpu;";

$ergebnis = mysql_query($abfrage);


mysql_connect("localhost","root");

mysql_select_db("scan1");

$abfrage2 = "SELECT * FROM cpu;";

$ergebnis2 = mysql_query($abfrage2);


if(ergebnis!=ergebnis2)

{

 echo'Unterschied in Tabelle CPU';

 echo '<br>';

}

else

{

 echo'kein Unterschied in Tabelle CPU';

 echo '<br>';

}

damit hab ich es mal probiert..

aber egal ob die tabellen in den beiden db's gleich sind oder nicht, ich bekomm immer "Unterschied in Tabelle CPU" ausgegeben..

Danke

MfG

lati

Bearbeitet von lati
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich glaub wir würden dir alle gerne weiterhelfen, aber es scheinen noch grundlegende Kenntnisse in der Programmierung und der SQL zu liegen.

Falls du es noch nicht kennst, würde ich dir gern dieses Tutorial ans Herz legen: Quakenet PHP Tutorial

Ab Kapitel 27 wird nochmal in aller Kürze die Sprache SQL erklärt. Und wenn du dir Kapitel 32 anschaust, wirst du sehr schnell sehen was damit gemeint ist:

ist ja auch kein Wunder.

PHP: mysql_query - Manual

Du verwendest direkt ein SELECT count(*)....
Das halte ich für eine sehr gute Idee. So würde dann nämlich auch der Vergleich in deinem PHP-Code funktionieren.
Link zu diesem Kommentar
Auf anderen Seiten teilen

kann mir jemmand , wenn er lust hat den code schreiben??

Datenbank1 | Datenbank2

Tabelle1 | Tabelle2

Inhalt1 |

Inhalt2 |

Einen Vergleich ob die Inhalte, die in db1 stehen, auch in db2 stehen.

Wenn ja rüber kopieren, wenn nicht ,dann überschreiben.

Wäre super nett, dann hätte ich einen kleinen Anfang.

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du nicht nur vergleichen, sondern auch *abgleichen* willst, ist das nicht so trivial.

es geht aus deinen postings auch nicht hervor, ob du felderweise oder zeilenweise abgleichen musst, d.h. datensätze, die in allen zeilen jeder einzelnen tabelle differieren, aus db1 SELECTieren und in db2 INSERTieren oder ob du auch auf vorhandene / nicht vorhandene felder prüfen musst (d.h. die struktur der tabellen ändern) möchtest.

es wir dir hier nur jeder ansätze liefern, einer davon:

öffne db1

öffne db1


für alle tabellen in db1 {

  für alle zeilen in tabelle {

    nimm zeile in tabelle

    vergleiche mit zeile in db2

    wenn ungleich oder nicht voranden {

      INSERTiere in db2.tabelle

    }

    nächste zeile

  }

  nächste tabelle

}


schliesse db1

schliesse db2

das setzt auch voraus, dass du zeilen eindeutig identifiezieren kannst, nämlich mittels PK - sonst wirds noch schwieriger und du musst auf feldebene vergleichen.

dass das ganze in PHP sauber gemacht werden muss ist klar, denn das script muss stabil laufen und datensatzkonsistenz schaffen / beibehalten. ich persönlich würde das garnicht mit PHP machen.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK,Danke schonmal,

Das Problem ist halt nur, das wir jeder ein Projekt bekommen haben, dass einem zugewiesen wurde.

Da ich keine Zeit habe mich vollständig mit der Thematik zu befassen, bräuchte ich "Anfangshilfe" und wollte mich an ein Forum wenden.

Habe bisher nur Installationsscripte geschrieben.

Meine Frage bezog sich ja nicht auf das komplette Projekt,sondern nur auf einen winzigen Teil davon...mit dem ich beginnen muss.

Deswegen wäre es super, wenn ihr mir einen kleinen Vergleich(Felderweise) posten könntet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

dann kläre doch erstmal mit deinem lehrer / auftraggeber ab, ob du dir in der geforderten zeit das nötige wissen aneignen kannst, ohne zumindest einen grossen teil bei jemand anderem erfragen zu müssen.

wenn du da jetzt eine woche zuwartest und dir niemand ein exakt passendes beispiel vorkaut (oder eines vorkaut, das unzureichend präzise oder brauchbar ist), hast du die zeit unnütz verschmissen.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...