A maneira mais fácil de copiar uma tabela de um banco de dados para outro?

Qual é o melhor método para copiar os dados de uma tabela de uma base de dados para uma tabela de outra base de dados quando as bases de dados estão sob diferentes utilizadores?

sei que posso usar

INSERT INTO database2.table2 SELECT * from database1.table1

mas aqui o problema é que ambos database1 e database2 estão sob diferentes utilizadores do MySQL. Então user1 só pode aceder database1 e user2 só pode aceder database2. Alguma ideia?

Author: Sparky, 2012-09-03

14 answers

Se tiver acesso à linha de comandos, pode usar mysqldump para descarregar o conteúdo de database1.table1 e canalizá-lo para mysql para database2. O problema aqui é que table1 ainda é table1.

mysqldump --user=user1 --password=password1 database1 table1 \
| mysql --user=user2 --password=password2 database2

Talvez precises de mudar o nome table1 para table2 com outra pergunta. Por outro lado, pode usar o sed para mudar o table1 para o table2 entre os tubos.

mysqldump --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2

Se o table2 já existir, poderá adicionar os parâmetros ao primeiro mysqldump que não permita criar a tabela-creates.

mysqldump --no-create-info --no-create-db --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2
 82
Author: helmor, 2012-09-03 07:18:37

CREATE TABLE db1.table1 SELECT * FROM db2.table1

Onde o db1 é o destino e o db2 é a fonte

 75
Author: mainmeat, 2014-03-24 19:30:46

Se estiver a utilizar PHPMyAdmin, pode ser muito simples. Suponha que tem as seguintes bases de dados:

DB1 & DB2

O DB1 tem utilizadores de tabelas que gosta de copiar para o DB2

Sob o PHPMyAdmin, abra o DB1, e depois vá para a tabela de utilizadores.

Nesta página, carregue na página "operações" no canto superior direito. Nas operações, procure a secção Copiar a tabela para (base de dados.quadro):

E acabou-se!

 38
Author: Mekey Salaria, 2015-08-13 11:51:57

MySQL Workbench : Fortemente Recomendado

Database Migration Tool From MySql Workbench

Isto resolverá facilmente os problemas de migração. Poderá migrar as tabelas seleccionadas das bases de dados seleccionadas entre o MySql e o SqlServer. Devias experimentar.
 21
Author: mmdemirbas, 2012-09-03 07:48:27

Uso Navicat para o MySQL...

Torna a manipulação de bases de dados fácil !

Basta seleccionar ambas as bases de dados no Navicat e depois usar.

 INSERT INTO Database2.Table1 SELECT * from Database1.Table1
 14
Author: Nick M, 2014-03-25 10:25:18

Utilize a funcionalidade de exportação e importação do MySql Workbench. Passos:
1. Seleccione os valores que deseja

E.g. select * from table1; 
  1. carregue no botão Exportar e grave-o como CSV.
  2. Crie uma nova tabela usando colunas semelhantes às primeiras

    E.g. create table table2 like table1; 
    
  3. Seleccione tudo na nova tabela

    E.g. select * from table2;  
    
  4. Carregue em Importar e seleccione o ficheiro CSV que exportou no Passo 2

Sample of the Export and Import buttons in MySql Workbench

 8
Author: biniam_Ethiopia, 2015-04-01 15:59:06
Eu sei que esta é uma pergunta antiga, só para responder para que qualquer um que aterre aqui tenha uma abordagem melhor.

A partir de 5. 6. 10 pode fazer

CREATE TABLE new_tbl LIKE orig_tbl;

Consulte a documentação aqui: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html

 6
Author: Mir, 2017-12-20 09:05:09

Se as suas tabelas estiverem no mesmo servidor de mysql, pode executar o seguinte

CREATE TABLE destination_db.my_table SELECT * FROM source_db.my_table;
ALTER TABLE destination_db.my_table ADD PRIMARY KEY (id); 
ALTER TABLE destination_db.my_table MODIFY COLUMN id INT AUTO_INCREMENT;
 5
Author: Weston Ganger, 2017-03-07 18:10:39
Aqui está outra maneira fácil:
  1. usar o DB1; mostrar criar a tabela TB1;
    • copiar a sintaxe aqui na área de transferência para criar o TB1 em DB2
  2. utilizar DB2;
    • colar a sintaxe aqui para criar a tabela TB1

INSERT INTO DB2.TB1 SELECT * from DB1.TB1;

 5
Author: MojganK, 2018-03-01 14:58:39

Tenta mysqldbcopy (documentação)

Ou você pode criar uma " tabela federada" no seu host alvo. Tabelas federadas permitem que você veja uma tabela de um servidor de banco de dados diferente como se fosse um local. Documentação)

Depois de criar a tabela federada, você pode copiar os dados com o habitual insert into TARGET select * from SOURCE

 4
Author: Aaron Digulla, 2014-04-23 21:01:57

Com o MySQL Workbench, poderá usar a exportação de dados para enviar apenas a tabela para um ficheiro SQL local (apenas dados, estrutura ou estrutura e dados) e, em seguida, importar dados para carregá-lo para o outro DB.

Pode ter várias ligações (máquinas diferentes, bases de dados, utilizadores) abertas ao mesmo tempo.

 3
Author: Doug Krugman, 2015-01-16 16:24:49
Isto é algo que precisas de fazer regularmente, ou só uma vez?

Você pode fazer uma exportação (por exemplo, usando o phpMyAdmin ou similar) que irá programar a sua tabela e o seu conteúdo para um ficheiro de texto, depois poderá voltar a importá-la para a outra base de dados.

 1
Author: Sepster, 2014-03-25 10:26:03

Usar os passos abaixo para copiar e inserir algumas colunas de uma tabela de base de dados para outra tabela de base de dados-

  1. criar um nome de tabela (columnname datatype (size), columnname datatype (size));

2.Inserir em db2.nome de tabuleiro seleccionar o nome de coluna1, o nome de Coluna2 do db1.nome do tabuleiro;

 1
Author: Vishnu More, 2015-08-13 07:24:59

No xampp basta exportar a tabela necessária como A.ficheiro sql e depois importá-lo para o necessário

 1
Author: Sameera Sampath, 2017-03-04 14:38:43