O LiCibase é recomendado para migrar dados de produção de um esquema antigo de banco de dados para um novo?

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

  •  26-09-2019
  •  | 
  •  

Pergunta

Sou novo no mundo da migração de dados e procurando maneiras de migrar os dados dos clientes usando o nossopp 1.0 para um novo banco de dados com um esquema compatível com o nossopp 2.0. Vi mais do que algumas pessoas recomendando o LIFLIBASE para gerenciamento de mudanças de banco de dados e tarefas de refatoração de banco de dados, o que, para meus ouvidos novatos, parece que pode estar próximo do que precisamos.

No entanto, depois de ler o material em www.liquibase.org, tenho a sensação de que o LIFIBASE tem mais sobre manter o esquema atualizado do que sobre a conversão de muitos dados já existentes para que possam ser persistidos no novo esquema.

Digamos que eu queria dividir uma coluna na minha tabela de funcionários chamada Name em uma coluna FirstName e LastName. O LIFIBASE seria capaz de alterar a tabela soltando a coluna Nome e adicionando uma coluna FirstName e LastName. No entanto, sinto que o LIliBase de sentimento não foi realmente criado para que eu conecte o código de conversão que analisaria o campo de nome dos registros existentes no banco de dados em um nome de primeira linha e o último nome e armazenaria os em suas respectivas colunas.

Por exemplo, diga que minha mesa parecia assim

id | name             | position
*********************************
12   Horace Slughorn    Professor
13   Albus Dumbledore   Headmaster

Depois que eu executei o LICIBASE, a coluna Nome seria substituída por uma coluna FirstName e LastName, para que meu esquema de banco de dados estivesse correto. Mas acho que o LiCibase não é uma estrutura que me permite conectar algum código que analisa "Horace Slughorn" em "Horace" e "Slughorn" e armazena esses valores nas colunas do primeiro nome e do último nome para esse registro.

id | firstname   |  lastname  | position
*****************************************
12   Horace         Slughorn         Professor
13   Albus          Dumbledore       Headmaster

Portanto, o LIFIBASE mantém seu esquema atualizado, mas não foi projetado para ajudá -lo a converter seus dados existentes, para que eles correspondam ao novo esquema. Isso está certo?

Foi útil?

Solução

O objetivo do LIFIBASE é permitir que você mova seu banco de dados de uma versão para a nova versão. Ele possui muitos "refatorings" no banco de dados incorporados, mas não tem um para dividir seus dados como você está descrevendo, porque como você interrompe as strings existentes depende muito da sua implementação.

LIFIBASE permite criar classes de mudança personalizadas (http://www.liquibase.org/manual/custom_refactoring_class) em 1.9, bem como um suporte de mudança personalizado muito mais poderoso em 2.0 (http://liquibase.org/extensions). É baseado em Java, portanto, seu script precisaria ser escrito em Java, mas você pode fazer qualquer leitura e manipulação de dados que precisar.

NOTA: Se você tiver muitos dados, lendo os registros no Java, então escrevê -los de volta será lento. Nesse caso, você pode usar a tag do LILIBASE e criar instrução SQL baseada em banco de dados e/ou procedimentos armazenados que farão a divisão no Database. O LILIBASE ainda será muito útil para rastrear que a divisão foi feita e não deve ser feita novamente.

Outras dicas

Você também pode usar o DBDeploy se desejar escrever SQL personalizado. O LIFIBASE suporta a gravação de SQL personalizada também, há migrador DBMaintain ou Ibatis.

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