web-dev-qa-db-de.com

Der einfachste Weg, eine Tabelle von einer Datenbank in eine andere zu kopieren?

Was ist die beste Methode, um Daten aus einer Tabelle in einer Datenbank in eine Tabelle in einer anderen Datenbank zu kopieren, wenn sich die Datenbanken unter verschiedenen Benutzern befinden?

Ich weiß, dass ich verwenden kann

INSERT INTO database2.table2 SELECT * from database1.table1

Aber hier ist das Problem, dass beide database1 und database2 stehen unter verschiedenen MySQL-Benutzern. Damit user1 kann Zugreifen database1 nur und user2 kann Zugreifen database2 nur. Irgendeine Idee?

130
Sparky

Wenn Sie über Shell-Zugriff verfügen, können Sie mysqldump verwenden, um den Inhalt von database1.table1 Zu sichern und an mysql an database2 Weiterzuleiten. Das Problem hierbei ist, dass table1 Immer noch table1 Ist.

mysqldump --user=user1 --password=password1 database1 table1 \
| mysql --user=user2 --password=password2 database2

Möglicherweise müssen Sie table1 Mit einer anderen Abfrage in table2 Umbenennen. Auf der anderen Seite können Sie sed verwenden, um Tabelle1 in Tabelle2 zwischen den to-Pipes zu ändern.

mysqldump --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2

Wenn table2 bereits vorhanden ist, können Sie dem ersten mysqldump die Parameter hinzufügen, mit denen die table-created nicht erstellt werden kann.

mysqldump --no-create-info --no-create-db --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2
97
helmor

CREATE TABLE db1.table1 SELECT * FROM db2.table1

dabei ist db1 das Ziel und db2 die Quelle

87
mainmeat

Wenn Sie PHPMyAdmin, verwenden, kann dies sehr einfach sein. Angenommen, Sie haben folgende Datenbanken:

DB1 & DB2

DB1 hat einen Tabellenbenutzer, den Sie nach DB2 kopieren möchten

Öffnen Sie unter PHPMyAdmin DB1 und wechseln Sie zur Benutzertabelle.

Klicken Sie auf dieser Seite oben rechts auf die Registerkarte "Operations". Suchen Sie unter Operationen nach dem Abschnitt Tabelle kopieren in (database.table):

& du bist fertig!

49
Mekey Salaria

MySql Workbench: Nachdrücklich empfohlen

Database Migration Tool From MySql Workbench

Dadurch können Migrationsprobleme problemlos behoben werden. Sie können ausgewählte Tabellen ausgewählter Datenbanken zwischen MySql und SqlServer migrieren. Sie sollten es auf jeden Fall versuchen.

23
mmdemirbas

Ich benutze Navicat für MySQL ...

Es macht alle Datenbankmanipulationen einfach!

Sie wählen einfach beide Datenbanken in Navicat aus und verwenden dann.

 INSERT INTO Database2.Table1 SELECT * from Database1.Table1
18
Nick M

Verwenden Sie die Export- und Importfunktionen von MySql Workbench. Schritte:
1. Wählen Sie die gewünschten Werte aus

E.g. select * from table1; 
  1. Klicken Sie auf die Schaltfläche Exportieren und speichern Sie diese als CSV.
  2. erstellen Sie eine neue Tabelle mit ähnlichen Spalten wie die erste

    E.g. create table table2 like table1; 
    
  3. wähle alle aus der neuen Tabelle aus

    E.g. select * from table2;  
    
  4. Klicken Sie auf Importieren und wählen Sie die CSV-Datei aus, die Sie in Schritt 2 exportiert haben

Sample of the Export and Import buttons in MySql Workbench

9
biniam

Ich weiß, das ist eine alte Frage, die nur beantwortet wird, damit jeder, der hier landet, einen besseren Zugang bekommt.

Ab 5.6.10 ist das möglich

CREATE TABLE new_tbl LIKE orig_tbl;

Lesen Sie die Dokumentation hier: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html

9
Mir

Wenn sich Ihre Tabellen auf demselben MySQL-Server befinden, können Sie Folgendes ausführen

CREATE TABLE destination_db.my_table SELECT * FROM source_db.my_table;
ALTER TABLE destination_db.my_table ADD PRIMARY KEY (id); 
ALTER TABLE destination_db.my_table MODIFY COLUMN id INT AUTO_INCREMENT;
7
Weston Ganger

Hier ist ein weiterer einfacher Weg:

  1. benutze DB1; show create table TB1;
    • kopieren Sie die Syntax hier in die Zwischenablage, um TB1 in DB2 zu erstellen
  2. benutze DB2;
    • fügen Sie hier die Syntax ein, um die Tabelle TB1 zu erstellen

INSERT INTO DB2.TB1 SELECT * from DB1.TB1;

7
MojganK

Versuchen Sie mysqldbcopy ( Dokumentation )

Oder Sie können eine " Verbundtabelle " auf Ihrem Zielhost erstellen. Mit Verbundtabellen können Sie eine Tabelle von einem anderen Datenbankserver anzeigen, als wäre es eine lokale Tabelle. ( Dokumentation )

Nach dem Erstellen der Verbundtabelle können Sie Daten mit dem üblichen insert into TARGET select * from SOURCE Kopieren.

4
Aaron Digulla

Mit MySQL Workbench können Sie den Datenexport verwenden, um nur die Tabelle in eine lokale SQL-Datei zu sichern (Nur Daten, Nur Struktur oder Struktur und Daten) und dann den Datenimport, um sie in die andere Datenbank zu laden.

Sie können mehrere Verbindungen (verschiedene Hosts, Datenbanken, Benutzer) gleichzeitig geöffnet haben.

4
Doug Krugman

Eine einfache Möglichkeit, alle erforderlichen Abfragen zu erhalten, besteht darin, die Daten aus information_schema und concat zu verwenden.

SELECT concat('CREATE TABLE new_db.', TABLE_NAME, ' LIKE old_db.', TABLE_NAME, ';') FROM `TABLES` WHERE TABLE_SCHEMA = 'old_db';

Sie erhalten dann eine Liste mit Ergebnissen, die so aussieht:

CREATE TABLE new_db.articles LIKE old_db.articles;
CREATE TABLE new_db.categories LIKE old_db.categories;
CREATE TABLE new_db.users LIKE old_db.users;
...

Sie können diese Abfragen dann einfach ausführen.

Es funktioniert jedoch nicht mit MySQL Views. Sie können diese vermeiden, indem Sie AND TABLE_TYPE = 'BASE TABLE' An die ursprüngliche Abfrage anhängen:

1
John Mellor

In xampp exportieren Sie einfach die gewünschte Tabelle als .sql-Datei und importieren Sie sie dann in die gewünschte .sql-Datei

1
Sameera Sampath

Müssen Sie dies regelmäßig oder nur einmal tun?

Sie können einen Export durchführen (z. B. mit phpMyAdmin oder ähnlichem), der Ihre Tabelle und ihren Inhalt in eine Textdatei schreibt, und diese dann erneut in die andere Datenbank importieren.

1
Sepster

führen Sie die folgenden Schritte aus, um einige Spalten aus einer Datenbanktabelle in eine andere Datenbanktabelle zu kopieren und einzufügen.

  1. CREATE TABLE Tabellenname (Spaltenname Datentyp (Größe), Spaltenname Datentyp (Größe));

2. INSERT INTO db2.tabellenname SELECT spaltenname1, spaltenname2 FROM db1.tabellenname;

1
Vishnu More