Je souhaite copier une table contenue dans une base de données et l'insérer dans une autre table de base de données
96
Je souhaite copier le schéma d'une table ainsi que les données de cette table dans une autre table de base de données dans une autre base de données sur un serveur en direct. Comment pourrais-je faire ça?
utiliser deux connexions à la base de données et lire la structure de la table de l'une et exécuter cette requête dans l'autre
Dau
Ces bases de données sont-elles sur des instances mysql séparées ou sur la même instance? Différentes instances peuvent être configurées avec la réplication s'il s'agit d'un processus continu.
Nick
@Nick mes bases de données sont sur différentes instances mysql. Pourriez-vous expliquer comment le copier?
johk95
Réponses:
218
Si vous souhaitez copier une table d'une base de données vers une autre base de données, vous pouvez simplement faire comme ci-dessous.
Excellente solution si la table n'a aucune contrainte de clé étrangère. J'ai utilisé ceci pour faire une copie d'une base de données entière au lieu d'une seule table. Pour cela, je recommanderais d'utiliser la commande mysqldump.
thorne51
MySQL peut désormais stocker les données de table dans des fichiers individuels (et les fichiers frm le sont également par table). Cette approche fonctionnerait sans aucun doute, mais avec d'énormes bases de données, elle est lente. Y a-t-il un autre moyen peut-être?
Alex Kovshovik
1
Cela ne fonctionne que si les bases de données sont sur le même serveur.
zgr024
10
ou simplement CREATE TABLE db2.table SELECT * FROM db1.table dans MySQL 5
Cela ne copie pas des éléments tels que l'index. Il crée simplement une table basée sur un ensemble de tuples. Vous ne voulez probablement pas faire ça.
Réponses:
Si vous souhaitez copier une table d'une base de données vers une autre base de données, vous pouvez simplement faire comme ci-dessous.
la source
ou simplement CREATE TABLE db2.table SELECT * FROM db1.table dans MySQL 5
la source
Dans BASH, vous pouvez faire:
la source
CREATE TABLE db2.table_new AS SELECT * FROM db1.table_old
la source
Si vous souhaitez simplement copier la structure, utilisez simplement
CREATE TABLE Db_Name.table1 LIKE DbName.table2;
Ps> qui ne copiera pas le schéma et les données
la source
utilisez simplement -
CREATE TABLE DB2.newtablename SELECT * FROM DB1.existingtablename;
la source
En ligne de commande:
Cela copiera la table à l'intérieur de SCHEMA sur l'hôte local vers SCHEMA2 sur l'autre hôte.
localhost et otherhost ne sont que des noms d'hôte et peuvent être identiques ou différents.
la source