Qual é o melhor método para copiar os dados de uma tabela em um banco de dados para uma tabela em outro banco de dados quando os bancos de dados estão sob usuários diferentes?
Eu 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 usuários do MySQL. Então, user1
pode acessar database1
apenas e user2
pode acessar database2
apenas. Qualquer ideia?
Respostas:
Se você tiver acesso ao shell, poderá
mysqldump
despejar o conteúdodatabase1.table1
e direcioná-lomysql
paradatabase2
. O problema aqui é quetable1
ainda étable1
.Talvez você precise renomear
table1
paratable2
com outra consulta. Por outro lado, você pode usar o sed para alterar a tabela1 para a tabela2 entre os tubos.Se a tabela2 já existir, você poderá adicionar os parâmetros ao primeiro mysqldump que não permite criar a tabela criada.
fonte
CREATE TABLE db1.table1 SELECT * FROM db2.table1
onde db1 é o destino e db2 é a fonte
fonte
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Se você estiver usando o PHPMyAdmin, pode ser realmente simples. Suponha que você tenha os seguintes bancos de dados:
O DB1 possui usuários de uma tabela que você deseja copiar para o DB2
No PHPMyAdmin, abra o DB1 e vá para a tabela de usuários.
Nesta página, clique na guia "Operações" no canto superior direito. Em Operações, procure a seção Copiar tabela para (database.table):
& você terminou!
fonte
MySql Workbench : Altamente Recomendado
Isso resolverá facilmente os problemas de migração. Você pode migrar tabelas selecionadas de bancos de dados selecionados entre MySql e SqlServer. Você deve experimentá-lo definitivamente.
fonte
mysql Workbench
migração àSQLYog
cópia do banco de dados? Do meu olhar rápido parece que eles são muito semelhantes, mas mysql bancada é uma característica mais recenteEu uso o Navicat para MySQL ...
Isso facilita toda a manipulação de banco de dados!
Você simplesmente seleciona os dois bancos de dados no Navicat e depois usa.
fonte
Eu sei que essa é uma pergunta antiga, apenas respondendo para que qualquer pessoa que chegue aqui tenha uma abordagem melhor.
A partir da versão 5.6.10, você pode fazer
Consulte a documentação aqui: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
fonte
Se suas tabelas estão no mesmo servidor mysql, você pode executar o seguinte
fonte
Use a funcionalidade de exportação e importação do MySql Workbench. Etapas:
1. Selecione os valores que deseja
crie uma nova tabela usando colunas semelhantes à primeira
selecione tudo da nova tabela
Clique em Importar e selecione o arquivo CSV que você exportou na etapa 2
fonte
Aqui está outra maneira fácil:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
fonte
Tente
mysqldbcopy
( documentação )Ou você pode criar uma " tabela federada " no seu host de destino. As tabelas federadas permitem ver uma tabela de um servidor de banco de dados diferente, como se fosse local. ( documentação )
Depois de criar a tabela federada, você pode copiar dados com o costume
insert into TARGET select * from SOURCE
fonte
Com o MySQL Workbench, você pode usar a Exportação de Dados para despejar apenas a tabela em um arquivo SQL local (Somente Dados, Somente Estrutura ou Estrutura e Dados) e depois Importar Dados para carregá-lo no outro banco de dados.
Você pode ter várias conexões (diferentes hosts, bancos de dados, usuários) abertas ao mesmo tempo.
fonte
Uma maneira simples de obter todas as consultas necessárias é usar os dados do information_schema e concat.
Você obterá uma lista de resultados parecidos com este:
Você pode simplesmente executar essas consultas.
No entanto, ele não funcionará com o MySQL Views. Você pode evitá-los anexando a
AND TABLE_TYPE = 'BASE TABLE'
partir da consulta inicial:fonte
Isso é algo que você precisa fazer regularmente ou apenas um?
Você pode fazer uma exportação (por exemplo, usando o phpMyAdmin ou similar) que criará um script em sua tabela e seu conteúdo em um arquivo de texto e poderá reimportá-la para o outro banco de dados.
fonte
use as etapas abaixo para copiar e inserir algumas colunas de uma tabela de banco de dados para outra tabela de banco de dados.
2. INSERIR NO db2.tablename SELECT columnname1, columnname2 FROM db1.tablename;
fonte
Primeiro, crie o despejo. Adicionado os
--no-create-info --no-create-db
sinalizadores, setable2
já existir:Em seguida, digite a
user1
senha. Então:Em seguida, digite a
user2
senha.O mesmo que o @helmors responde, mas a abordagem é mais segura, pois as senhas não são expostas em texto bruto ao console (pesquisa reversa-i, busca de senhas etc.). Outra abordagem é boa se for executada a partir de um arquivo de script com as restrições apropriadas impostas às suas permissões.
fonte
No xampp basta exportar a tabela necessária como um arquivo .sql e depois importá-la para o necessário
fonte
crie a tabela destination_customer como sakila.customer (Database_name.tablename), isso copiará apenas a estrutura da tabela de origem, para que os dados também sejam copiados com a estrutura, crie a tabela destination_customer como selecione * de sakila.customer
fonte
CREATE TABLE LIKE
perguntas, então por que mencionar que está errado? E não há explicação de como essa resposta resolve o problema de que nenhum usuário tem acesso às tabelas do outro.