Was ist die beste Methode, um die 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
unter verschiedenen MySQL-Benutzern sind. So user1
kann Zugriff database1
nur und user2
zugreifen können database2
nur. Irgendeine Idee?
Antworten:
Wenn Sie ein Shell - Zugang haben , können Sie verwenden , um
mysqldump
den Inhalt von dumpdatabase1.table1
und Rohr esmysql
zudatabase2
. Das Problem hier ist, dasstable1
es immer noch isttable1
.Vielleicht müssen Sie umbenennen ,
table1
umtable2
mit einer anderen Abfrage. Auf der anderen Seite können Sie sed verwenden, um table1 in table2 zwischen den to-Pipes zu ändern.Wenn table2 bereits vorhanden ist, können Sie die Parameter zum ersten mysqldump hinzufügen, mit dem die Tabellenerstellungen nicht erstellt werden können.
quelle
CREATE TABLE db1.table1 SELECT * FROM db2.table1
Dabei ist db1 das Ziel und db2 die Quelle
quelle
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Wenn Sie PHPMyAdmin verwenden, kann dies sehr einfach sein. Angenommen, Sie haben folgende Datenbanken:
DB1 hat Tabellenbenutzer, die Sie in DB2 kopieren möchten
Öffnen Sie unter PHPMyAdmin DB1 und wechseln Sie zur Benutzertabelle.
Klicken Sie auf dieser Seite oben rechts auf die Registerkarte "Vorgänge" . Suchen Sie unter Operationen nach dem Abschnitt Tabelle kopieren nach (database.table):
& du bist fertig!
quelle
MySql Workbench : Sehr zu empfehlen
Dies wird Migrationsprobleme leicht lösen. Sie können ausgewählte Tabellen ausgewählter Datenbanken zwischen MySql und SqlServer migrieren. Sie sollten es auf jeden Fall versuchen.
quelle
mysql Workbench
Migration mitSQLYog
der Datenbankkopie verglichen haben . Von meinem kurzen Blick scheint es, dass sie sehr ähnlich sind, aber MySQL Workbench ist eine neuere FunktionIch benutze Navicat für MySQL ...
Es macht alle Datenbankmanipulationen einfach!
Sie wählen einfach beide Datenbanken in Navicat aus und verwenden sie dann.
quelle
Ich weiß, dass dies eine alte Frage ist, die nur beantwortet wird, damit jeder, der hier landet, einen besseren Ansatz erhält.
Ab 5.6.10 können Sie tun
Weitere Informationen finden Sie hier: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
quelle
Wenn sich Ihre Tabellen auf demselben MySQL-Server befinden, können Sie Folgendes ausführen
quelle
Verwenden Sie die Export- und Importfunktion von MySql Workbench. Schritte:
1. Wählen Sie die gewünschten Werte aus
Erstellen Sie eine neue Tabelle mit ähnlichen Spalten wie die erste
Wählen Sie alle aus der neuen Tabelle aus
Klicken Sie auf Importieren und wählen Sie die CSV-Datei aus, die Sie in Schritt 2 exportiert haben
quelle
Hier ist ein weiterer einfacher Weg:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
quelle
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 so anzeigen, als wäre es eine lokale. ( Dokumentation )
Nach dem Erstellen der Verbundtabelle können Sie Daten mit den üblichen Daten kopieren
insert into TARGET select * from SOURCE
quelle
Mit MySQL Workbench können Sie den Datenexport verwenden, um nur die Tabelle in eine lokale SQL-Datei (nur Daten, nur Struktur oder Struktur und Daten) zu sichern, und dann den Datenimport, um sie in die andere Datenbank zu laden.
Sie können mehrere Verbindungen (verschiedene Hosts, Datenbanken, Benutzer) gleichzeitig öffnen.
quelle
Eine einfache Möglichkeit, alle benötigten Abfragen abzurufen, besteht darin, die Daten aus information_schema und concat zu verwenden.
Sie erhalten dann eine Liste mit Ergebnissen, die folgendermaßen aussieht:
Sie können diese Abfragen dann einfach ausführen.
Es funktioniert jedoch nicht mit MySQL Views. Sie können sie vermeiden, indem Sie
AND TABLE_TYPE = 'BASE TABLE'
an die erste Abfrage anhängen :quelle
Müssen Sie das regelmäßig tun oder nur einmal?
Sie können einen Export durchführen (z. B. mit phpMyAdmin oder ähnlichem), der Ihre Tabelle und ihren Inhalt in eine Textdatei schreibt, und diesen dann erneut in die andere Datenbank importieren.
quelle
Führen Sie die folgenden Schritte aus, um einige Spalten von einer Datenbanktabelle in eine andere Datenbanktabelle zu kopieren und einzufügen.
2.INSERT INTO db2.tabellenname SELECT Spaltenname1, Spaltenname2 FROM db1.tabellenname;
quelle
Erstellen Sie zuerst den Speicherauszug.
--no-create-info --no-create-db
Flags hinzugefügt , fallstable2
bereits vorhanden:Geben Sie dann das
user1
Passwort ein. Dann:Geben Sie dann das
user2
Passwort ein.Wie @helmors Antwort, aber der Ansatz ist sicherer, da Passwörter nicht in Rohtext für die Konsole verfügbar gemacht werden (Reverse-i-Search, Passwort-Sniffer usw.). Ein anderer Ansatz ist in Ordnung, wenn er aus einer Skriptdatei mit entsprechenden Einschränkungen für die Berechtigungen ausgeführt wird.
quelle
IN xampp exportieren Sie einfach die erforderliche Tabelle als SQL-Datei und importieren Sie sie dann in die gewünschte
quelle
Erstellen Sie die Tabelle destination_customer wie sakila.customer (Database_name.tabellenname). Dadurch wird nur die Struktur der Quelltabelle kopiert. Damit Daten auch mit der Struktur kopiert werden, erstellen Sie die Tabelle destination_customer als select * aus sakila.customer
quelle
CREATE TABLE LIKE
in der Frage, warum also erwähnen, dass es falsch ist? Und es gibt keine Erklärung dafür, wie diese Antwort das Problem löst, dass keiner der Benutzer Zugriff auf die Tabellen des anderen hat.