2010-02-25 10 views
1

Je dois migrer les informations que j'ai créées dans SQLite3 vers une base de données MySQL sur mon site Web. Le site est sur un serveur hébergé. J'ai un accès à distance à la base de données MySQL. J'ai d'abord pensé que ce serait facile, mais je ne trouve pas de bonnes informations, et tout ce que je lis semble impliquer que vous devez vider le fichier SQLite3, le convertir en un fichier de vidage MySQL en utilisant des scripts désordonnés, puis l'importer dans le MySQL.Migration d'une table de base de données SQLite3 vers MySQL avec Python sans fichiers de vidage

(exemple: Quick easy way to migrate SQLite3 to MySQL?)

Ma question: est-il pas mieux de le lire et l'importer directement à partir du script dans MySQL. Je n'ai pas du tout utilisé MySQL avec Python, mais il semblerait intuitif qu'il serait préférable d'avoir moins d'étapes pour que les choses soient mal lues. J'essaie également de gagner un peu de temps en n'ayant pas à comprendre la façon dont un fichier de vidage MySQL fonctionne. Si vous avez un script (Python si possible), un outil ou un lien qui va m'aider, ce serait génial, mais ma principale préoccupation est de savoir comment s'y prendre. Je ne peux pas vérifier tout de façon réaliste (sinon je ferais simplement copier et coller), donc je veux être sûr que je vais dans le bon sens. J'utilise Django, il existe peut-être une méthode spécifique à Django, mais je n'ai pas réussi à en trouver une.

Répondre

2

La raison pour laquelle les scripts "désordonnés" sont requis est que c'est généralement un problème difficile à résoudre.

Si vous êtes chanceux, il n'y aura pas trop d'incompatibilités de schéma entre les bases de données.

Ceux-ci peuvent aider

db_dump.py
dbpickle.py
What is your favorite solution for managing database migrations in django?

+0

"La raison pour laquelle les scripts" désordonnés "sont requis est que c'est généralement un problème difficile à résoudre." ... c'est la raison pour laquelle je veux juste sauter tout cela. Si j'ouvre le sqlite3, parcourez la table et mettez à jour la table mysql rangée par rangée, cela ne semble pas désordonné, mais personne ne semble le faire de cette façon. Ma question est pourquoi? – Vernon

+0

@Vernon, Faites ce qui est le plus facile pour vous. Beaucoup de gens semblent migrer via les dumps DB. Vous pourriez trouver un meilleur moyen que quiconque auparavant. Si ça ne marche pas, vous pouvez toujours revenir en arrière et essayer les dumps :) –

+0

@Vernon: probablement parce que vous devez vous assurer que le schéma correspond. Prendre des données typées de façon lâche et les insérer dans un schéma plus fortement typé est susceptible de poser quelques problèmes, et chaque application peut avoir une stratégie différente pour les traiter. – Kylotan

2

Avez-vous essayé d'utiliser la dumpdata et loaddata de django-admin?

par exemple. vidage sqllite3 db

manage.py dumpdata 

changement db mysql, recréer des tables et de la charge

manage.py loaddata mydata.json 

dumpdata par défaut dépotoirs JSON mais vous pouvez définir le format XML aussi. Alternativement, vous pouvez simplement lire sqlite3 db entiers en utilisant python db api ou sqlalchemy ou django ORM et le vider dans MySQL db.

+0

J'ai négligé le fait que la dumpdata l'a mis en format json. Cela rend certainement beaucoup plus facile. J'essaie d'éviter d'avoir à charger chaque table en tant que fichier (je ne veux pas télécharger toute la base de données, seulement certains fichiers) Je ne sais toujours pas pourquoi écrire un script qui lit la base de données sqlite3 et télécharge à mysql. Comme la base de données sqlite3 est sur mon ordinateur et que mysql se trouve sur un serveur hébergé, si je peux tout faire en une seule fois, ce serait beaucoup plus facile. Sinon, je vais faire les tableaux un par un avec la méthode que vous suggérez. – Vernon

+0

@vermon, oui vous pouvez écrire un script, si c'est facile, et vous n'avez que quelques données à charger –

Questions connexes