Grosse Datenmengen mit mysql abgleichen
AllesMeins
- datenbank
1 Christian Kruse0 jonny
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
你好 AllesMeins,
Soweit so schön, nur habe ich keine Ahnung wie ich solche grossen Mengen
abgleiche, ich kann ja schlecht einfor($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
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