Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Insert In von einer Datenbank in eine andere

Ihre Abfrage sollte folgendermaßen aussehen:

INSERT INTO newDatabase.table1 (Column1, Column2) 
SELECT column1, column2 FROM oldDatabase.table1;

AKTUALISIEREN

Da diese Antwort mehr Aufmerksamkeit erhält, als ich erwartet hatte, sollte ich diese Antwort erweitern. Erstens ist es möglicherweise nicht aus der Antwort selbst ersichtlich, aber die Spalten müssen nicht denselben Namen haben. Folgendes wird also auch funktionieren (vorausgesetzt, dass die Spalten in ihren jeweiligen Tabellen vorhanden sind):

INSERT INTO newDatabase.table1 (Column1, Column2) 
SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;

Außerdem müssen sie nicht einmal echte Spalten in der Tabelle sein. Eines der Beispiele für die Transformation von Daten, die ich häufig verwende, ist:

INSERT INTO newDatabase.users (name, city, email, username, added_by) 
SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;

Wie es jetzt vielleicht offensichtlicher ist, lautet die Regel, solange die SELECT-Abfrage die gleiche Anzahl von Spalten zurückgibt, die die INSERT-Abfrage benötigt, kann sie anstelle von VALUES verwendet werden.