Qual é o melhor método para copiar os dados de uma tabela de um banco de dados para uma tabela de outro banco de dados quando os bancos de dados estão sob diferentes usuários?
Eu sei que posso usar
INSERT INTO database2.table2 SELECT * from database1.table1
Mas aqui o problema é que tanto o "banco de dados1" quanto o "banco de dados2" estão sob diferentes usuários do MySQL. Então o user1
só pode acessar a base de dados1
e o user2
só pode acessar a base de dados2
. Alguma idéia?
Se você tiver acesso ao shell você pode utilizar o mysqldump
para descarregar o conteúdo do database1.table1
e canalizá-lo para o mysql
para o database2
. O problema aqui é que mysqldump1
ainda é mysql
para mysql
para database2
.
mysqldump --user=user1 --password=password1 database1 table1 \
| mysql --user=user2 --password=password2 database2
Talvez você precise renomear table1
para table2
com outra consulta. Por outro lado, você pode usar sed para mudar a tabela1 para tabela2 entre a tabela para pipes.
mysqldump --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2
Se a tabela2 já existe, você pode adicionar os parâmetros ao primeiro mysqldump que não deixa criar a tabela-criar.
mysqldump --no-create-info --no-create-db --user=user1 --password=password1 database1 table1 \
| sed -e 's/`table1`/`table2`/' \
| mysql --user=user2 --password=password2 database2
Ferramenta de Migração de Banco de Dados do MySql Workbench]2
Isto irá lidar facilmente com problemas de migração. Você pode migrar tabelas selecionadas de bancos de dados selecionados entre MySql e SqlServer. Você deve tentar com certeza.
É algo que você precisa fazer regularmente, ou apenas uma vez?
Você pode fazer uma exportação (por exemplo, usando o phpMyAdmin ou similar) que irá escrever sua tabela e seu conteúdo em um arquivo de texto, então você pode reimportar isso para a outra Base de Dados.