Veröffentlicht 5. Januar 200916 j 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
5. Januar 200916 j 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# ...
5. Januar 200916 j 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?
5. Januar 200916 j mit xampp und php.. das eine ist ein softwarepaket, das andere eine scriptsprache. DBMS sind das keine. aber ich nehme an das soll heissen, du verwendest MySQL? s'Amstel
5. Januar 200916 j 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
6. Januar 200916 j 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
6. Januar 200916 j 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 6. Januar 200916 j von lati
6. Januar 200916 j danke für deine antwort... aber ich kann damit nicht wirklich was anfangen.. wie gesagt ich bin anfänger.. was genau soll falsch sein? ich tippe auf $ergebnis = mysql_query($abfrage); mfg lati
6. Januar 200916 j liefert mysql_query() eine Ressourcen-Kennung oder FALSE, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall TRUE, Soll heißen Du schraubst an der ganz falschen Stelle. Frank
6. Januar 200916 j was genau muss ich denn ändern?? komm da grad nicht ganz hinterher.. danke schonmal für deine hilfe :-) mfg lati
7. Januar 200916 j Was willst Du mit deinem Statement überhaupt erreichen? Das einzige was mir bei SELECT * .... einfällt ist die Anzahl der Datensätze zu vergleichen. Dort hilft dir mysql_numrows oder Du verwendest direkt ein SELECT count(*).... Frank
7. Januar 200916 j 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.
7. Januar 200916 j 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.
7. Januar 200916 j 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
7. Januar 200916 j 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.
7. Januar 200916 j 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. Bekomme ich dann einen Teil Deines Lohns? Phil
7. Januar 200916 j das projekt ist für die schule, ich mach das ohne entlohnung.. Bearbeitet 7. Januar 200916 j von lati
7. Januar 200916 j 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
7. Januar 200916 j ihr versteht glaub ich nicht was ich meine, ist ja nicht schlimm, versuche es auf andereren wege
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.