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?


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;

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


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


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


1

einfach benutzen -

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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.