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?

user1031092
fonte
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;

fonte
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

HukeLau_DABA
fonte
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
Billynoah
fonte
2

CREATE TABLE db2.table_new AS SELECT * FROM db1.table_old

Rashi Goyal
fonte
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

Hemant Shori
fonte
1

simplesmente use -

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

Vishnu More
fonte
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.

DrGeneral
fonte