Dans cet article nous allons voir comment migré une base de donné crée sur SQLite vers Mysql pour votre projet Django.

Introduction :

Le travail va être réalisé en 4 étapes.

Dans un 1er temps nous allons réaliser un Dump de la base en SQLite, puis nous allons la convertir au format Mysql, car les Dump ne sont naturellement pas compatible.Ensuite nous allons importer le Dump converti dans Mysql.

Et enfin un travail de correction, car tous n'est pas parfait.

Dump de la base SQLite :

Pour cette étape, nous allons avoir besoin du client SQLite3 installé sur votre serveur.

Si cela n'est pas le cas vous pouvez l'installer avec la commande suivente :

#apt-get install sqlite3

Pour réaliser le Dump, nous allons nous rendre dans le dossier où est héberger votre base de donnés SQLite et exécuter la commande suivante.

#cd /root/Django/project/database/

#sqlite3 database .dump > dump.sql

 

Conversion du Dump SQLite en dump Mysql :

Maintenant que nous avons un Dump de votre base actuel, nous allons pouvoir la convertir au format Mysql.
Pour nous aider dans cette tâche un script python existe.
 
*Attention, ce script n'est pas parfait. Il se peut que toutes les données ne soient pas correctement convertis.

#wget http://www.redmine.org/attachments/download/6239/sqlite3-to-mysql.py

#chmod a+x sqlite3-to-mysql.py

#cat dump.sql | python sqlite3-to-mysql.py > mysqldump.sql

 

Importation de votre Dump :

Pour cette étape, il vous faut avoir installé au préalable Mysql-server et avoir créé la base utiliser par votre projet.

#apt-get install mysql-server
#apt-get install python-mysqldb

#mysql -u USER -p PASSWORD

mysql > create database DATABASE;
mysql > exit

Puis exécuter cette commande :

#mysql -u USER -p PASSWORD -D DATABASE --default-character-set=utf8 < mysqldump.sql

Une fois l'importation terminé, nous pouvons voir les points à vérifier sur votre base de données.

Finalisation de la conversion :

La conversion gère pas les champs avec l'incrémentassion automatique. Vous devez donc passer sur les différentes tables de votre base et de réactiver cette option, souvent ces champs sont liés au ID dans votre table.

Vous pouvez avoir aussi des effets indésirables avec les différents codages dans les tables ( UTF-8, Latin-1, etc...)

N'oubliez pas de changer la configuration de la base de données dans votre settings.py avent de le relancer.

Source : http://fabianpeter.de/cloud/owncloud-migrating-from-sqlite-to-mysql/

  • Partager
  • Url: http://www.duhaz.fr/blog/django-migre-une-base-sqlite-vers-mysql/