AllesMeins: Grosse Datenmengen mit mysql abgleichen

Hiho,

ich stehe zur Zeit vor dem Problem das ich ein PHP script schreiben will das fähig sein sollte grössere Datenmengen mit einer mySQL Datenbank abzugleichen. Nun habe ich zwar eine grobe Ahnung wie mySQl Queries auszusehen haben, aber keine Ahnung wie ich z.B.: 10000 Datensätze gleichzeitig prüfen soll. es geht um folgendes Szenario. Ich verwalte Userdaten für einen Login in einer Datenbank und habe nun eine Datei mit weiteren Informationen zu den Benutzern, die gegen die Datenbenk abgeglichen werden sollen. Also sagen wir in der Datenbank stehen 10000 Benutzer (BenutzerID, Mailadresse, Anschrift, Passwort) und ich erhalte eine XML Datei mit sagen wir 9900 Einträgen: Sagen wir mit einer BenutzerID, der Mailadresse und der Anschrift. Nun soll die Datenbank auf den aktuellsten Stand gebracht werden, sprich es soll getestet werden bei welchen benutzern sich was geändetr hat und bei denen der Eintrag geändert werden. Soweit so schön, nur habe ich keine Ahnung wie ich solche grossen Mengen abgleiche, ich kann ja schlecht ein

for($i = 0;$i < 10000;$i++){
 UPDATE db
}

machen. Wie formuliere ich einen mySQL Query der effektiv mit solchen Mengen umgehen kann? Oder muss ich das alles in einzelnen UPDATE Befehlen machen und die dann als einen Block an die Datenbank schicken. Also zusammengefasst: Wie führe ich ganz viele UPDATE Befhele aus ohne zig tausend Querys abzusetzen...

Marc

  1. 你好 AllesMeins,

    Soweit so schön, nur habe ich keine Ahnung wie ich solche grossen Mengen
    abgleiche, ich kann ja schlecht ein

    for($i = 0;$i < 10000;$i++){
    UPDATE db
    }

    machen.

    Da wird dir aber nicht viel anderes uebrig bleiben ;-) Du kannst es
    eventuell (wenn du PHP 4.1 verwendest) etwas beschleunigen, in dem du
    mehrere Queries gleichzeitig sendest. Aber ansonsten bleibt dir nur genau
    die Update-Loesung uebrig. Die Alternative waere es naemlich, ein Select
    ueber die betreffenden Datensaetze zu machen und im Script zu pruefen, ob
    sich was geaendert hat -- auch nicht wirklich sinnvoll.

    再见,
     CK

    --
    Kommt ein Nullvektor zum Psychiater: "Herr Doktor, ich bin orientierungslos!"
    http://wwwtech.de/
  2. Hallo,

    machen. Wie formuliere ich einen mySQL Query der effektiv mit solchen Mengen umgehen kann? Oder muss ich das alles in einzelnen UPDATE Befehlen machen und die dann als einen Block an die Datenbank schicken. Also zusammengefasst: Wie führe ich ganz viele UPDATE Befhele aus ohne zig tausend Querys abzusetzen...

    ich habe nicht viel Ahnung von MySQL, aber bei Oracle-Datenbanken würde ich zunächst alle notwendigen Informationen in einem SQL-Statement selektieren und in einer Datei speichern, damit nicht für jedes einzelne Statement ein Connect zur Datenbank gemacht werden muss. Auf Dateisystemebene vergleichst du dann am besten die Sätze beider Dateien und generierst dir gleichzeitig ein Update-Script. Mit einem Shellskript (am besten ksh) geht das locker flockig :-)

    Mfg,
    Jonny