Quiero copiar la tabla contenida en una base de datos e insertarla en otra tabla de la base de datos

96

Quiero copiar el esquema de una tabla, así como los datos dentro de esa tabla, a otra tabla de base de datos en otra base de datos en un servidor en vivo. ¿Cómo podría hacer esto?

usuario1031092
fuente
use dos conexiones de base de datos y lea la estructura de la tabla de una y ejecute esa consulta en la otra
Dau
¿Están estas bases de datos en instancias mysql separadas o en la misma? Se pueden configurar diferentes instancias con replicación si este es un proceso continuo.
Nick
@Nick mis bases de datos están en diferentes instancias de mysql. ¿Podrías explicar cómo copiarlo?
johk95

Respuestas:

218

Si desea copiar una tabla de una base de datos a otra base de datos, simplemente puede hacer lo siguiente.

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

fuente
2
Gran solución si la tabla no tiene restricciones de clave externa. Usé esto para hacer una copia de una base de datos completa en lugar de solo una tabla. Para eso, recomiendo usar el comando mysqldump.
thorne51
MySQL ahora puede almacenar datos de tablas en archivos individuales (y los archivos frm también son por tabla). Este enfoque sin duda funcionaría, pero con grandes bases de datos es lento. ¿Hay otra forma tal vez?
Alex Kovshovik
1
Esto solo funciona si las bases de datos están en el mismo servidor.
zgr024
10

o simplemente CREAR TABLA db2.table SELECT * FROM db1.table en MySQL 5

HukeLau_DABA
fuente
4
Esto no copia cosas como index. Simplemente crea una tabla basada en un conjunto de tuplas. Probablemente no quieras hacer esto.
BenMQ
Sí, esta consulta no copia el índice
XxXk5XxX
4

En BASH puedes hacer:

mysqldump database_1 table | mysql database_2
Billynoah
fuente
2

CREAR TABLA db2.table_new AS SELECT * FROM db1.table_old

Rashi Goyal
fuente
2

Si solo desea que se copie la estructura, simplemente use

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps> que no copiará el esquema y los datos

Hemant Shori
fuente
1

simplemente use -

CREAR TABLA DB2.newtablename SELECT * FROM DB1.existingtablename;

Vishnu Más
fuente
0

En la línea de comandos:

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

Esto copiará la tabla dentro de SCHEMA en localhost a SCHEMA2 en otherhost.

localhost y otherhost son solo nombres de host y pueden ser iguales o diferentes.

DrGeneral
fuente