MySQL => gleichzeitig mehrere Inserts?
andreas
- php
Hallo!
Wenn ich in mysql mehr als eina Abfrage ausführen will, geht das nur in einer Schleife????
Ich meine sowas wie in PHPmyAdmin, wenn man z.B. das Dumpschema hat, sind das ja z.B. für eine Tabelle 100 Inserts. Jetzt kann ich die in PHPmyAdmin ja einfach in dieses Formularfeld einfügen und die werden alle ausgeführt. Wenn ich folgends probiere schlägt das fehl:
$string = "INSERT INTO sync (ClientID) VALUES ('c1')";
$string .= "INSERT INTO sync (ClientID) VALUES ('c2')";
$string .= "INSERT INTO sync (ClientID) VALUES ('c3')";
$res=mysql_query($string, $link);
Aber das hatte ich schonmal gehört. Jetzt die Frage, wenn ich 100 oder mehr inserts der Art habe, wie macht man das dann am besten? Es geht darum Daten von einer DB in eine andere zu bekommen(automatisch), auf verschiedenen Servern, daher schicke ich die Daten per POST an das entsprechende Script, welches die Inserts ausführen soll. Ich hatte mir das so überlegt dass ich alle Daten direkt als INSERT in einen String schreibe und den übertrage.
Oder spicht da was dagegen?
Muß ich dann per explode() z.B. immer bei ";" trennen und dann in einer Schleife den Array auslesen und jedesmal mysql_query($string, $link); ausführen?
Oder wie sollte man das machen?
Viele Grüße
Andreas
Hallo!
mysqldump --help
mysqladmin --help
Die Kurzform:
mysqldump -uUSERNAME -p DATENBANKNAME > filename.sql
mysqladmin -uUSERNAME -p DATENBANKNAME < filename.sql
lg
Ludwig
Hallo!
mysqldump --help
mysqladmin --help
ups.. mysql --help
Die Kurzform:
mysqldump -uUSERNAME -p DATENBANKNAME > filename.sql
mysql -uUSERNAME -p DATENBANKNAME < filename.sql
lg
Ludwig
warte, warte, nicht so schnell!
mysqldump -uUSERNAME -p DATENBANKNAME > filename.sql
Kann ich das auch auf Tabellen beschrenken?
Aber das Problem an der Sache ist, dass ich nur neue Datensätze übertragen will, und geänderte Updaten. Das mache ich mit dem Timestamp, einer Tabelle für das letzte Sync-Dateum und masterIDs bzw. anderen ClientIDs, aber das funktioniert alles Jedenfalls sind das nut ganz bestimmte Datenssätze die entweder aktualisiert, eingefügt oder gelöschet werden. Das geht dann nicht maher so einfach mit Dump.
Wenn ich aber die ganzen SQL-Abfragen erzeugt habe und in dem String per POST verschicke, muß ich diesen String wieder in eine Datei(filename.sql) schreiben, und dann
mysql -uUSERNAME -p DATENBANKNAME < filename.sql
und es werden alle darin enthaltenen Abfragen ausgeführt, richtig?
Oder gint es noch eine Möglichkeit nach einem bestimmten Datum geänderte (timestamp) bzw. neue Datensätze in den Dump zu bekommen - das wäre natürlich der Hammer:-)
Jedenfalls schonmal vielen Dank, auf die Idee war ich noch gar nicht gekommen!
Viele Grüße
Andreas
PS: Hab mal gehört es gäbe mit Linux eine Möglichkeit, 2 Datenbank-Server laufend zusynchroniesieren - weiß da jemdn was von?
Sup!
Kann ich das auch auf Tabellen beschrenken?
Das ist sicher der Backlash fuer "aufwaenden" ;-)
Gruesse,
Bio
eh, mach nen export und importiere das dann wieder?
ansonten: insert geht soweit ich weiss nur ein einer schleife. du kannst mal probieren die einzelnen befehle per semikolon zu trennen (insert into blah () values ();insert into blah () values ();ins...)
eh, mach nen export und importiere das dann wieder?
Wie gesagt würde ich gerne nur Änderungen und neue DS übernehmen, denn es können zwischenzeitlich sowohl am Amster als auch am Client änderungen und neue Einträge passieren, so würde ich entweder die des Clients, oder die des Masters überschreiben.
ansonten: insert geht soweit ich weiss nur ein einer schleife. du kannst mal probieren die einzelnen befehle per semikolon zu trennen (insert into blah () values ();insert into blah () values ();ins...)
Hatte ich auch probiert, ging auch nicht. Geht wohl nicht, also brauche ich die Schleife, wenn ich das so mache. Aber wenn ich das evtl direkt mit Import mache, und in die Import-File nur die SQL-Abfragen scheibe, die die für Änderungen und neue DS ausgeführt werden sollen, fumktioniert das dann auch so als würde ich die in deine Schleife in PHP ausführen, oder wird da was überschrieben?
Grüße
Andreas