So kopieren Sie eine Tabelle von einer MySQL-Datenbank in eine andere MySQL-Datenbank
Lesezeit: 3 Minuten
Ergec
Ich muss eine Tabelle von einer Datenbank in eine andere kopieren. Dies wird ein Cronjob sein. Welches ist der beste Weg, es zu tun? PHP-Skript oder Shell-Skript. Das Problem mit PHP, beide Datenbanken haben unterschiedliche Benutzernamen und Passwörter, also kann ich es so nicht machen.
CREATE TABLE db1.table1 SELECT * FROM db2.table1
Soll ich einfach die erste DB verbinden, alle Datensätze abrufen und alle mit der WHILE-Schleife in die neue Datenbank einfügen, oder gibt es einen besseren Weg?
Ich bevorzuge dafür ein Shell-Skript anstelle eines PHP-Skripts.
Vielen Dank
Wenn Sie die Tabelle auf denselben Server kopieren müssen, können Sie diesen Code verwenden:
USE db2;
CREATE TABLE table2 LIKE db1.table1;
INSERT INTO table2
SELECT * FROM db1.table1;
Da ich nur eine Tabelle übertragen möchte, denke ich, dass dies mit ein wenig Mod funktionieren wird mysqldump -u user1 -ppassword1 –add-drop-table databasename tablename > dump.sql danke
– Ergec
14. Oktober 2010 um 11:35 Uhr
Wenn Sie phpmyadmin verwenden, wird es besser.
– gautamlakum
14. Oktober 2010 um 13:22 Uhr
Sie können es sogar durchleiten: mysqldump --user=root --password=remote_password the_database_name | mysql --user=root --password=local_password the_database_name; Normalerweise kann dies von Server zu Server mit SSH-Port-Weiterleitung erfolgen: ssh -f -N -L 3307:localhost:3306 nmmn (nmmn ist eine meiner SSH-Shortcuts, verwenden Sie stattdessen einen Servernamen + Port); @Ergec für mehrere Tabellen verwenden Sie den param --tables table1 table2
– Feeela
30. August 2011 um 21:50 Uhr
Persönlich würde ich die Datei wieder in mysql kategorisieren
– Daryl Gill
6. Mai 2013 um 15:29 Uhr
Bemerkenswert ist auch, dass kein Leerzeichen dazwischen ist -p und das Passwort. Einige neigen dazu zu denken, dass es sich um einen Tippfehler handelt, und wenn Ihr Passwort Sonderzeichen enthält, müssen Sie diese mit `\` akzentuieren
Alles kann mit einem einzigen Befehl erledigt werden.
$L1 = mysql_connect('localhost', 'user1', 'pass1');
$DB1 = mysql_select_db('database1', $L1);
$L2 = mysql_connect('localhost', 'user2', 'pass2');
$DB2 = mysql_select_db('database2', $L2);
$re=mysql_query("SELECT * FROM table1",$L1);
while($i=mysql_fetch_assoc($re))
{
$u=array();
foreach($i as $k=>$v) if($k!=$keyfield) $u[]="$k='$v'";
mysql_query("INSERT INTO table2 (".implode(',',array_keys($i)).") VALUES ('".implode("','",$i)."') ON DUPLICATE KEY UPDATE ".implode(',',$u),$L2) or die(mysql_error());
}
user1, pass1, database1, table1 bezieht sich auf die ursprüngliche Tabelle user2, pass2, database2, table2 bezieht sich auf die kopierte Tabelle $keyfield ist der Primärschlüssel der Tabelle
Optional können Sie auch einen alternativen Port hinzufügen, z -P 3309
– Phase
25. Februar 2020 um 11:41 Uhr
gautamlakum
Phpmyadmin verfügt über eine eingebaute Funktion zum Kopieren von Tabellen von einer Datenbank in eine andere. Andernfalls können Sie mit Pekka gehen oder die Tabelle exportieren und dann die Tabelle importieren.
Optional können Sie auch einen alternativen Port hinzufügen, z -P 3309
– Phase
25. Februar 2020 um 11:41 Uhr
Zorn
CREATE TABLE db_target.cloned_table
SELECT *
FROM db_source.source_table;
Einfach und gerade. Ich frage mich, warum niemand das nützlich fand, da ich der erste bin, der es hochstimmt.
– Faraz Ahmad
1. April 2020 um 15:13 Uhr
Dadurch werden die Schlüssel nicht kopiert.
– Arnoldvogel
8. April 2020 um 3:46 Uhr
12065500cookie-checkSo kopieren Sie eine Tabelle von einer MySQL-Datenbank in eine andere MySQL-Datenbankyes