Quero copiar a tabela contida em um banco de dados e inserir em outra tabela de banco de dados


96

Quero copiar o esquema de uma tabela, bem como os dados dessa tabela, para outra tabela de banco de dados em outro banco de dados em um servidor ativo. Como posso fazer isso?


use duas conexões de banco de dados e leia a estrutura da tabela de uma e execute essa consulta na outra
Dau

Esses bancos de dados estão em instâncias separadas do mysql ou são o mesmo? Diferentes instâncias podem ser configuradas com replicação se este for um processo contínuo.
Nick

@Nick meus bancos de dados estão em diferentes instâncias do mysql. Você poderia explicar como copiá-lo?
johk95 de

Respostas:


218

Se você deseja copiar uma tabela de um banco de dados para outro banco de dados, você pode simplesmente fazer como abaixo.

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

2
Ótima solução se a tabela não tiver restrições de chave estrangeira. Usei isso para fazer uma cópia de um banco de dados inteiro em vez de apenas uma tabela. Para isso, eu recomendo usar o comando mysqldump.
thorne51 de

O MySQL agora pode armazenar dados da tabela em arquivos individuais (e os arquivos frm também estão por tabela). Essa abordagem sem dúvida funcionaria, mas com bancos de dados enormes é lenta. Existe outra maneira, talvez?
Alex Kovshovik

1
Isso só funciona se os bancos de dados estiverem no mesmo servidor.
zgr024

10

ou apenas CREATE TABLE db2.table SELECT * FROM db1.table no MySQL 5


4
Isso não copia coisas como índice. Ele simplesmente cria uma tabela com base em um conjunto de tuplas. Você provavelmente não quer fazer isso.
BenMQ

Sim, esta consulta não copia o índice
XxXk5XxX

4

No BASH você pode fazer:

mysqldump database_1 table | mysql database_2


2

Se você apenas deseja que a estrutura seja copiada, basta usar

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps> que não copia esquema e dados


1

simplesmente use -

CREATE TABLE DB2.newtablename SELECT * FROM DB1.existingtablename;


0

Em linha de comando:

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

Isso copiará a tabela dentro de SCHEMA em localhost para SCHEMA2 em otherhost.

localhost e otherhost são apenas nomes de host e podem ser iguais ou diferentes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.