Quero mesclar dados de um banco de dados para outro. Então, crio o dump com mysqldump
e importo-o para outro banco de dados (com a mesma estrutura de tabelas). Não tenho problemas (como entradas duplicadas ou outra coisa) neste caso.
Mas faço algumas mesclagens para fins de teste e farei a mesclagem final mais tarde. Então, eu quero executar a mesclagem (os dados podem ser alterados) algumas vezes. Observe que minhas linhas nas minhas tabelas nunca são excluídas, apenas podem ser inseridas ou atualizadas.
Posso criar o mysqldump com a opção ON DUPLICATE? Ou posso mesclar despejo que insere novos dados e atualiza dados modificados?
Claro, posso inserir ON DUPLICATE
no dump manualmente, mas quero automatizar o processo de mesclagem.
--replace
é equivalente a fazerON DUPLICATE UPDATE
em todas as colunas. Infelizmente, o mysqldump não foi projetado para atualizar colunas específicas devido à natureza de carregamento e despejo em massa do mysqldump. Minha resposta simplesmente revela o que o mysqldump é capaz de fazer. Você teria que escrever um código personalizado, além do mysqldump, para fazerON DUPLICATE UPDATE
.REPLACE INTO
poderá falhar porque o registro não pode ser excluído com o rompimento desses relacionamentos. Se você tiverON DELETE CASCADE
, esvaziará as tabelas que dependem da atualização.REPLACE INTO
é uma operação bastante perigosa.REPLACE INTO
) podem ser perigosas e ter efeitos "surpreendentes". Boa resposta - só queria adicionar uma ressalva.