
Um Daten aus einzelnen Spalten von einer MySQL-Tabelle in eine Andere zu kopieren (z.B. vom Entwicklungsserver zum Produktionsserver) gibt es einen einfachen Trick: Über die
CONCAT-Funktion UPDATE-Statements erzeugen.
In diesem Beispiel möchte ich die Informationen in der Spalte primecost der Tabelle articles extrahieren und auf einem andern Server einspielen:
SELECT CONCAT("UPDATE articles SET primecost='",primecost,"' WHERE sku='",sku,"';") FROM articles INTO OUTFILE "primecost.sql";
In der Datei primecost.sql schlagen dann eine ganze Reihe von UPDATEs auf:
UPDATE articles SET primecost='39.49' WHERE sku='C23125123';
UPDATE articles SET primecost='12.99' WHERE sku='M23108241';
UPDATE articles SET primecost='14.99' WHERE sku='F23987912';
...
Diese kann ich dann auf dem Produktionsserver bequem an der Linux-Konsole einspielen:
mysql -uwolfgang -ppasswort datenbankname < primecost.sql
Da ich den Inhalt der Felder primecost und sku genau kenne ist hier Injection ausnahmsweise kein Thema. Je nach Feldinhalt kann man auch mit
REPLACE kritische Zeichen escapen.