Ich möchte eine Tabelle aus einer Datenbank kopieren und in eine andere Datenbanktabelle einfügen

96

Ich möchte das Schema einer Tabelle sowie die Daten in dieser Tabelle in eine andere Datenbanktabelle in einer anderen Datenbank auf einem Live-Server kopieren. Wie könnte ich das machen?

user1031092
quelle
Verwenden Sie zwei Datenbankverbindungen und lesen Sie die Tabellenstruktur von einer und führen Sie diese Abfrage in eine andere aus
Dau
Befinden sich diese Datenbanken auf separaten MySQL-Instanzen oder auf derselben? Wenn dies ein kontinuierlicher Prozess ist, können verschiedene Instanzen mit Replikation eingerichtet werden.
Nick
@Nick meine Datenbanken befinden sich auf verschiedenen MySQL-Instanzen. Können Sie erklären, wie man es kopiert?
johk95

Antworten:

218

Wenn Sie eine Tabelle von einer Datenbank in eine andere Datenbank kopieren möchten, können Sie einfach wie folgt vorgehen.

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

quelle
2
Gute Lösung, wenn die Tabelle keine Fremdschlüsseleinschränkungen aufweist. Ich habe dies verwendet, um eine Kopie einer gesamten Datenbank anstelle nur einer Tabelle zu erstellen. Dafür würde ich empfehlen, den Befehl mysqldump zu verwenden.
Thorne51
MySQL kann jetzt Tabellendaten in einzelnen Dateien speichern (und die frm-Dateien sind auch pro Tabelle). Dieser Ansatz würde zweifellos funktionieren, ist aber bei riesigen Datenbanken langsam. Gibt es vielleicht einen anderen Weg?
Alex Kovshovik
1
Dies funktioniert nur, wenn sich die Datenbanken auf demselben Server befinden.
zgr024
10

oder einfach CREATE TABLE db2.table SELECT * FROM db1.table in MySQL 5

HukeLau_DABA
quelle
4
Dies kopiert keine Dinge wie Index. Es wird lediglich eine Tabelle erstellt, die auf einer Reihe von Tupeln basiert. Sie wollen das wahrscheinlich nicht tun.
BenMQ
Ja, diese Abfrage kopiert nicht indexe
XxXk5XxX
4

In BASH können Sie Folgendes tun:

mysqldump database_1 table | mysql database_2
Billynoah
quelle
2

CREATE TABLE db2.table_new AS SELECT * FROM db1.table_old

Raschi Goyal
quelle
2

Wenn Sie nur möchten, dass die Struktur kopiert wird, verwenden Sie einfach

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps>, das Schema und Daten nicht kopiert

Hemant Shori
quelle
1

einfach benutzen -

CREATE TABLE DB2.newtablename SELECT * FROM DB1.existingtablename;

Vishnu Mehr
quelle
0

In der Kommandozeile:

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

Dadurch wird die Tabelle in SCHEMA auf localhost nach SCHEMA2 auf otherhost kopiert.

localhost und otherhost sind nur Hostnamen und können gleich oder verschieden sein.

Allgemeines
quelle