2008-08-10 9 views
19

J'ai actuellement une base de données MySQL relativement petite (4 ou 5 tables, 5000 lignes) que je voudrais convertir en base de données sqlite. Comme je devrais potentiellement le faire plus d'une fois, je serais reconnaissant si quelqu'un pourrait recommander des outils utiles, ou au moins une méthode facile à reproduire.Quelle est la meilleure façon de convertir une base de données mysql en une base sqlite?

(j'avoir un accès complet admin à la base de données/machines concernées.)

Répondre

1

Si c'est juste quelques tables, vous pouvez probablement ce script dans votre langauge de script préféré et ont tout fait par le temps qu'il prendrait lire toutes les réponses ou traquer un outil approprié. Je voudrais n'importe comment. :)

+0

r possède des bibliothèques sqlite et mysql ce qui est sympa. vous pouvez tirer et pousser à l'intérieur du même cadre. – EngrStudent

2

Tant qu'un fichier de vidage MySQL ne dépasse pas le langage de requête SQLite, vous devriez être en mesure de migrer assez facilement:

[email protected]~$ mysqldump old-database > old-database-dump.sql 
[email protected]~$ sqlite3 -init old-database-dump.sql new-database 

Je ne l'ai pas essayé moi-même.

MISE À JOUR:

On dirait que vous aurez besoin de faire une ou deux modifications de la décharge de MySQL. J'utiliserais sed, ou Google for it.

Juste la syntaxe du commentaire, auto_increment & TYPE = déclaration, et les caractères d'échappement diffèrent.

4

J'ai dû faire des choses similaires à quelques reprises. L'approche la plus simple pour moi a été d'écrire un script qui tire d'une source de données et produit une sortie pour la nouvelle source de données. Faites simplement une requête SELECT * pour chaque table de votre base de données actuelle, puis videz toutes les lignes dans une requête INSERT INTO pour votre nouvelle base de données. Vous pouvez soit vider cela dans un fichier ou le rediriger directement dans le frontend de la base de données.

Ce n'est pas joli, mais honnêtement, cela ne semble guère être une préoccupation majeure pour des choses comme ça. Cette technique est rapide à écrire, et cela fonctionne. Ce sont mes principaux critères pour des choses comme ça. Vous pouvez également consulter this thread. Il semble que quelques personnes ont déjà réuni ce dont vous avez besoin. Je n'ai pas regardé si loin, cependant, donc aucune garantie.

2

Voici une liste des convertisseurs:


Une autre méthode qui fonctionnerait bien, mais est rarement mentionné est la suivante: utiliser une classe ORM qui fait abstraction des différences de bases de données spécifiques par pour toi. par exemple. vous obtenez ces en PHP ( RedBean), Python (la couche ORM de Django, Storm, SqlAlchemy), Ruby on Rails ( ActiveRecord), cacao ( CoreData)

-à-dire que vous pouvez le faire:

  1. Charger des données à partir base de données source en utilisant la classe ORM.
  2. Stocker des données dans la mémoire ou sérialiser sur le disque.
  3. Stockez les données dans la base de données source à l'aide de la classe ORM.
Questions connexes