"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Migrar SQLite para MySQL.

Migrar SQLite para MySQL.

Publicado em 2024-11-08
Navegar:308

Apresento-me, sou Alfredo Riveros e aprendo programação há alguns anos, atualmente estou cursando Técnico Superior em Desenvolvimento de Software na Escola Superior de Comércio - Río Tercero, e a seguir descreverei um desafio que eu encontrado.

Como o título diz, meu objetivo era migrar um banco de dados SQLite para MySQL, algo que surgiu de um trabalho na disciplina de banco de dados que estou cursando.

O banco de dados que selecionei pertence ao jogo SQL Murder Mystery. Este jogo, criado para ensinar SQL de forma divertida, está disponível neste link, onde você pode baixar o banco de dados fornecido por seus desenvolvedores.

Escolhi esta base de dados pela sua orientação pedagógica, visto que embora seja um jogo em si, constitui um recurso valioso tanto para o ensino como para a aprendizagem de conceitos relacionados com bases de dados.

Meu primeiro passo neste desafio foi investigar se eu poderia usar o DB Browser for SQLite para exportar o banco de dados em um formato compatível com o MySQL Workbench. Embora eu tenha conseguido gerar um script SQL a partir do DB Browser, importá-lo para o Workbench apresentou inúmeros problemas, principalmente de sintaxe e integridade de dados, além da complexidade de gerenciar um arquivo tão grande.

Migrar de SQLite a MySQL.

Migrar de SQLite a MySQL.

Estudei esse arquivo e tentei resolver os problemas de sintaxe, e finalmente cheguei à conclusão que deveria procurar outra abordagem.

Meu próximo passo foi usar a função sqlite3 para exportar um script sql através do terminal (linux).

Migrar de SQLite a MySQL.

Desta vez o script melhorou muito na sintaxe, mas mesmo assim o grande problema é que sempre aparecia um ou outro problema novo.

Com ambas as abordagens esgotadas, parei um momento para refletir e avaliar outras alternativas. Considerei que Python poderia ser uma ferramenta eficaz para essa migração, dado seu suporte tanto para SQLite quanto para MySQL, e comecei a projetar um algoritmo para automatizar o processo.

Então procurei informações sobre o tema, primeiro verificando se era uma abordagem possível e coletando informações para poder desenhar um algoritmo que me permitisse atingir meu objetivo.

Agora descreverei brevemente a nova abordagem com a qual alcancei sucesso em meu objetivo.
A primeira coisa que fiz foi documentar minha pesquisa passo a passo, o que me levou a aprender sobre algo chamado mapeamento objeto-relacional (ORM).

mapeamento objeto-relacional (ORM) é uma técnica usada em programação para converter dados entre sistemas de tipos incompatíveis em linguagens de programação orientadas a objetos. No contexto de bancos de dados, o ORM permite interagir com bancos de dados relacionais por meio de objetos, em vez de usar consultas SQL diretamente. Isso fornece uma maneira mais intuitiva e eficiente de trabalhar com dados.

No meu caso utilizei o SQLAlchemy para realizar o desenvolvimento do algoritmo em python, e analisando os resultados encontrei os seguintes pontos chave.

  • Classes como Tabelas:
    • Cada classe que você define (como crime_scene_report, drivers_license, etc.) corresponde a uma tabela no banco de dados. Os atributos da classe representam as colunas da tabela.
  • Instâncias como linhas:
    • Cada instância de uma classe representa uma linha na tabela correspondente. Ao consultar dados do SQLite, você obtém instâncias dessas classes, o que torna o trabalho com dados mais intuitivo e orientado a objetos.
  • Operações de inserção e atualização:
    • Usar métodos como merge() permite operar diretamente nessas instâncias. Você pode inserir novos registros ou atualizar os existentes sem precisar escrever consultas SQL manualmente, o que simplifica o código e o torna mais legível.
  • Gerenciamento de relacionamento:
    • SQLAlchemy lida automaticamente com relacionamentos entre tabelas (por exemplo, por meio de chaves estrangeiras) por meio de atributos em classes, facilitando a navegação entre registros relacionados.

Migrar de SQLite a MySQL.

Uma coisa importante a ser observada durante o processo, após várias tentativas e erros, é que compreender a abordagem e avaliar o código escrito é crucial, pois ajuda a identificar locais onde podem surgir problemas. Após alguma reflexão e pausa, cheguei à conclusão de que o problema provavelmente estava relacionado à estrutura do banco de dados. Porém, uma dúvida persistia em minha mente: como é possível que esse banco de dados funcione em SQLite apesar de ter problemas de integridade e dos diversos erros que apareceram? A resposta é simples: diferentemente do MySQL, o SQLite permite ter tabelas sem chaves primárias, o que contribui para grandes diferenças no gerenciamento de dados entre os dois sistemas. Essa flexibilidade no SQLite pode mascarar problemas que, em um ambiente mais restritivo como o MySQL, resultariam em erros imediatos.

Outra diferença é que o MySQL tem uma abordagem mais rigorosa para estrutura e tipos de dados. Por exemplo, se você definir um campo como INTEGER, não poderá inserir um valor que não seja um número.

As diferenças continuam, o resultado de entendê-las foi perceber que para a abordagem funcionar teria que haver uma mudança no banco de dados, para isso resolvi modificar as tabelas e garantir que elas estivessem de acordo com os padrões do MySQL, o A primeira coisa é que cada um tenha sua chave primária, e certifico-me de que ambos tenham os mesmos tipos de dados.

Acrescento... Se você quiser fazer o mesmo, lembre-se que o SQLite não permite alterar tabelas diretamente, outra grande diferença do MySQL.

Finalmente, feitas as adaptações no script, e no algoritmo escrito em python, passei a executá-lo. O resultado: o banco de dados do jogo foi migrado para MySQL.

Esse desafio não apenas melhorou minhas habilidades técnicas, mas também me ensinou a importância de compreender as diferenças entre os sistemas de gerenciamento de banco de dados e como elas podem afetar a integridade dos bancos de dados.

Espero que minha experiência na migração de banco de dados SQLite para MySQL tenha sido útil e inspiradora. Cada desafio apresenta uma oportunidade de aprender e crescer no mundo da programação.
Obrigado pela leitura e até a próxima!

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/silvio_riveros_49b5505866/migrar-de-sqlite-a-mysql-217i?1 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3