En ocasiones utilizamos una base de datos sqlite3 en nuestros programas. Puede que más adelante queramos migrar de sqlite a mysql. No sólo habrá que actualizar el programa, sino que también habrá que migrar los datos que ya tenemos grabados en la base de datos.
La manera más sencilla de hacer esta migración, es realizando una exportación desde sqlite a un archivo de texto. Este archivo, no es directamente importable por mysql, por lo que antes hay que hacer una serie de adaptaciones.
Para ello, instala sqlite3 si todavía no lo tienes instalado, y realiza un volcado de la base de datos a un archivo de texto:
sudo apt-get install sqlite3 sqlite3 bbdd.sqlite .dump > bbdd.sql
Aunque el archivo bbdd.sql contiene toda la información de la base de datos, no es directamente importable por mysql. Antes es necesario hacer una serie de adaptaciones en el mismo.
Para hacer estas adaptaciones, podemos usar el siguiente script python que puedes descargar de github:
./sqlite2mysql.py bbdd.sql > bbdd.mysql
El archivo obtenido puede ser importado a MySQL con un pequeño matiz, y es que las tablas creadas en sqlite3, pueden tener los campos con una definición demasiado «vaga» para MySQL, por lo que tendrás que revisar los comandos CREATE TABLE, poniendo un tipo MySQL y una longitud.
Tendrás que convertir a VARCHAR(XX) los campos que no tengan un tipo definido, así como convertir a DECIMAL(X,Y) los de tipo REAL de sqlite. Una vez realizada esta adaptación, ya se puede importar como si fuera un volcado de una base de datos MySQL normal:
mysql -u user -p nombre_db < bbdd.mysql
Si vamos a importarlo en una base de datos nueva, previamente, deberíamos haber creado en MySQL la base de datos «nombre_db».
Espero que te haya sido útil.
RodriPCH96 dice
¿Como se hace la migración en Windows?
jaime dice
Hola Rodri,
en Windows debería ser igual con la salvedad de que en vez de instalar sqlite3 usando sudo apt-get install, deberías instalarlo descargando el instalador de sqlite de la página oficial (https://www.sqlite.org/)