Migrando do MySQL para arbitrárias compatível com os padrões do servidor SQL2003

StackOverflow https://stackoverflow.com/questions/85522

  •  01-07-2019
  •  | 
  •  

Pergunta

Existe um encantamento de mysqldump ou uma ferramenta semelhante que irá produzir um pedaço de código SQL2003 para criar e preencher os mesmos bancos de dados em um RDBMS compliant SQL2003 arbitrária?

(O que eu estou tentando agora é MonetDB)

Foi útil?

Solução

instruções DDL são inerentemente banco de dados específico do fornecedor. Embora tenham a mesma estrutura básica, cada fornecedor tem sua própria visão sobre como definir tipos, índices, restrições, etc.

DML, por outro lado são bastante portátil. Portanto, sugiro:

  • Despejar o banco de dados sem quaisquer dados (mysqldump --no-dados) para obter o esquema
  • Faça as alterações necessárias para obter o esquema carregado por outro DB - estes precisam ser feitas à mão (mas alguma pesquisa / substitua pode ser possível)
  • despejar os dados com inserções estendidas fora e não criar a tabela (--extended-insert = 0 --no-create-info)
  • Execute o script resultante contra o outro DB.

Isso deve fazer o que quiser.

No entanto, ao portar um aplicativo para um fornecedor de banco de dados diferente, muitas outras coisas será exigido; movendo o esquema e dados é a parte fácil. Verificação de erros introduzidos, comportamento diferente e teste de desempenho é o pouco difícil.

No mínimo teste cada única consulta no seu aplicativo para a validade do novo banco de dados. Idealmente fazer muito mais.

Outras dicas

Este é tipo de difícil. A menos que você tem uma estrutura DB muito simples com tipos de baunilha (varchar, integer, etc), provavelmente você está indo para obter os melhores resultados escrevendo uma ferramenta de migração. Em uma linguagem como Perl (através do DBI), isso é muito simples. O programa é, basicamente, um circuito de eco que lê a partir de uma base de dados e se insere o outro. Existem exemplos deste tipo de código que o Google sabe sobre.

Além do problema óbvio de mover os dados é o problema mais sutil de como alguns tipos de dados são representados. Por exemplo, o campo de data e hora do MS SQL não está no mesmo formato que o MySQL do. Outros tipos de dados, como BLOBs pode ter uma capacidade diferente em um RDBMs do que em outro. Você deve se certificar de que você compreende as definições de tipo de dados do sistema DB-alvo muito bem antes de portar.

O último problema, claro, é obter declarações de nível de aplicativo SQL para trabalhar contra o novo sistema. No meu trabalho, que é, de longe, a parte mais difícil. Data matemática parece específico DB-especialmente, enquanto as coisas irritantes como citando regras são uma constante fonte de irritação.

Boa sorte com seu projeto.

A partir do SQL Server 2000 ou 2005 você pode tê-lo gerar scripts para seus objetos, mas não estou certo de quão bem eles serão transferidos para outros RDBMS.

A opção de gerar script é provavelmente a maneira mais fácil de ir. Você, sem dúvida, vai ter que fazer alguma pesquisa / substituir em alguns tipos de dados embora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top