Migrar uma base de dados a MySQL

Miguel Angel Alvarez
Artigo publicado no site Criaweb : http://www.criarweb.com 

Indicações úteis para migrar uma base de dados a MySQL, é dizer, quando temos de subir uma base de dados local em qualquer gestor a uma base de dados remota em MySQL.


O último caso no que nos podemos encontrar na hora de subir uma base de dados ao nosso provedor de alojamento é que a base de dados que tenhamos criada em local vá ser utilizada em remoto. Em remoto supomos sempre que vamos utilizar a base de dados MySQL. Em local poderíamos dispor de uma base de dados Access, SQL Server ou de outro sistema de base de dados.

O processo da migração pode ser bastante complexo e como há tantas bases de dados diferentes, vai ser complicado dar uma "receita" que funcione em todos os casos. Para além da dificuldade de transferir informação entre os dois sistemas gestores de bases de dados, também influirá muito na complexidade do problema o tipo de dados das tabelas que estamos a utilizar. Por exemplo, as datas, os campos numéricos com decimais ou os boleanos podem dar problemas ao passar de um sistema a outro porque podem armazenar-se de maneiras diferentes ou nos caso dos números, com uma precisão diferente.

Recomendações para migrar de Access a MySQL

Se a nossa base de dados anterior estava construída em Access a migração será fácil graças a que MySQL dispõe dum driver ODBC para sistemas Windows, que nos permite conectar Access com o próprio MySQL e passar informação facilmente.

Devemos indicar que se desejarmos fazer uma exportação desde Access em local a MySQL em remoto pode haver problemas porque não todos os servidores permitem as conexões em remoto com a base de dados. Se não temos disponível uma conexão em remoto com o nosso servidor de bases de dados vamos ter que mudar de estratégia.

A idéia neste último caso é instalar MySQL em local e realizar a migração desde Access em local a MySQL em local e depois ,fazer um backup da base de dados local e subi-la a remoto, tal e qual como se relatou antes.

Recomendações para migrar desde SQL Server a MySQL

A verdade é que nunca passei por este problema, mas Access também nos pode ajudar neste caso. Access permite seleccionar uma base de dados SQL Server e trabalhar desde a própria interfaz de Access. A idéia é que Access também permite trabalhar com MySQL e possivelmente fazendo uma pontes entre estes dois sistemas gestores podemos exportar dados desde SQL Server a MySQL.

O certo é que utilizando o próprio Access de ponte poderíamos realizar o trabalho. Primeiro exportando de SQL Server a Access e depois de Access a MySQL.

Outras bases de dados e outras técnicas

Se a base de dados origem dispõem de um driver ODBC não haverá (em teoria) nenhum problema para conecta-la com Access, de maneira similar a como se conecta com MySQL. Poderíamos utilizar Access para exportar os dados, porque desde ali poderia-se aceder aos dois sistemas gestores de bases de dados

Se não temos Access, ou a base de dados original não tem driver ODBC, ou ainda se não funciona correctamente o processo e não sabemos como resolver o problema, outra possibilidade é exportar os dados a ficheiros de texto, separados por vírgulas ou algo parecido. Muitas bases de dados têm ferramentas para exportar os dados das tabelas a ficheiros de texto, os quais podem ser introduzidos no nosso sistema gestor destino (MySQL) com a ajuda de alguma ferramenta tal como PhpMyAdmin.

Para isso, na página de propriedades da tabela encontraremos uma opção para fazer o backup da tabela e para introduzir ficheiros de texto dentro de uma tabela (Insert textfiles into table)

link para aceder ao menú de inserção de ficheiros de texto


Acedendo a este link poderemos ver um formulário onde introduzir as características do ficheiro de texto, como o carácter utilizado como separador de campos, ou o terminador de linhas, etc, junto com o próprio ficheiro com os dados, e PhpMyAdmin encarregar-se-á de todo esse trabalho de incluir eses dados na tabela.

menú de inserção de ficheiros de texto


Obviamente, é necessário ter a tabela criada em remoto para que se possa introduzir os dados do ficheiro de texto.

Mudança de um formato de dados a outro

Toda migração tem de ter em conta muito especialmente, como já se disse, as formas que tenham cada base de dados de guardar a informação. Temos que contar sempre com a possibilidade de transformar alguns dados como podem ser os campos boleanos, datas, campos memo (texto com longitude indeterminada), etc, que podem armazenar-se de maneira diferente em cada um dos sistemas gestores, origem e destino.

Nalguns casos possivelmente tenhamos de realizar algum script que realize as mudanças necessárias nos dados. Por exemplo para localizar os valores boleanos guardados como true/false e muda-los a valores inteiros 0 / 1, que é como se guarda em MySQL. As datas também podem sofrer alterações de formato, por exemplo, em Access aparece com o formato (dd/mm/aaaa), e em MySQL o formato é (aaaa-mm-dd). PHP pode Ajudar-nos na tarefa de fazer este script mas também Visual Basic Script para Access pode fazer estas tarefas complexas e a própria linguagem SQL, à base de sentenças dirigidas contra a base de dados.

Miguel Angel Alvarez