Fonctionne comme du charme! Voici un peu de documentation: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlitegist.github.com/943776
kachar
Le script extrait simplement les arguments de la ligne de commande et les transmet à mysqldump, afin que vous puissiez en savoir plus sur la configuration des ports personnalisés, etc. avec man mysqlouman mysqldump
Encore mieux pour jouer avec des caractères non-ascii: $. / Mysql2sqlite.sh --default-character-set = utf8 -hHost -uUser -pPass db | sqlite3 db.sqlite gist.github.com/esperlu/943776#gistcomment-984448
Une autre méthode qui fonctionnerait même sur Windows mais qui est rarement mentionnée est la suivante: utilisez une classe ORM qui résume pour vous les différences de base de données spécifiques. par exemple, vous les obtenez en PHP ( RedBean ), Python (couche ORM de Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) etc.
c'est-à-dire que vous pouvez faire ceci:
Chargez les données de la base de données source à l'aide de la classe ORM.
Stockez les données en mémoire ou sérialisez sur le disque.
Stockez les données dans la base de données de destination à l'aide de la classe ORM.
N'oubliez pas gem install mysqletgem install sqlite3
Nick
1
et gem install pgsi vous voulez convertir depuis ou vers une base de données postgres, la suite devrait avoir des adaptateurs pour les principales bases de données
Macario
2
remplacer mysqlpar mysql2si vous utilisezmysql2
Carlosin
1
Remarque: vous aurez besoin du ruby-devpackage pour créer ces packages de gemmes natifs.
Panda
1
Dû utiliser "gem install sequel mysql2 sqlite3" puis "suite mysql2: // utilisateur: mot de passe @ hôte / base de données -C sqlite: //db.sqlite" PARFAIT
unom
17
Tous les schémas de base de données ne peuvent pas être convertis. MySQL est plus complexe et riche en fonctionnalités que SQLite. Cependant, si votre schéma est assez simple, vous pouvez le vider dans un fichier SQL et essayer de l'importer / le charger dans une base de données SQLite.
Après avoir vidé votre base de données MySQL dans un fichier, vous pouvez utiliser ce script pour la convertir en SQLite github.com/dumblob/mysql2sqlite (comme mentionné dans la réponse de @David_LeBauer).
Paul Rougieux le
7
J'ai rencontré le même problème il y a environ 2 jours lorsque j'ai dû convertir une base de données MySQL de 20 Go + en SQLite. Ce n'était en aucun cas une tâche facile et j'ai fini par écrire ce package Python qui fait le travail.
L'avantage d'être écrit en Python est qu'il est multiplateforme (contrairement à un script shell / bash) et peut être facilement installé à l'aide pip install(même sous Windows). Il utilise des générateurs et la segmentation des données en cours de traitement et est donc très efficace en mémoire.
Il est invocable via la ligne de commande mais peut également être utilisé comme une classe Python standard que vous pouvez inclure dans une orchestration Python plus grande.
Voici comment vous l'utilisez:
Usage: mysql2sqlite [OPTIONS]
Options:-f,--sqlite-file PATH SQLite3 database file [required]-d,--mysql-database TEXT MySQL database name [required]-u,--mysql-user TEXT MySQL user [required]-p,--mysql-password TEXT MySQL password-h,--mysql-host TEXT MySQL host. Defaults to localhost.-P,--mysql-port INTEGER MySQL port. Defaults to 3306.-c,--chunk INTEGER Chunk reading/writing SQL records-l,--log-file PATH Log file-V,--vacuum Use the VACUUM command to rebuild the SQLitedatabasefile, repacking it into a minimal amount
ofdisk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQLdatabase. This can be useful in situations where
multiple queries,with small result sets, need to
be combined or computed with each other.--help Show this message and exit.
Hé @techouse, ça a l'air génial! Existe-t-il un moyen de fonctionner avec un .sqlfichier de vidage ou nécessite-t-il une connexion à une base de données MySQL installée?
vortek le
Hey! Ummm, non cela nécessite une base de données MySQL fonctionnelle. Si vous avez un vidage sans serveur réel, le mieux est de changer le fichier manuellement si vous savez ce que vous faites.
Klemen Tušar
@arkadianriver Je vous suggère de toujours utiliser des environnements virtuels avec Python 😎
Klemen Tušar
5
Sqlite a officiellement la liste des outils de conversion.
il y a différentes facons de faire cela. J'ai aussi eu ce problème et j'ai beaucoup cherché, puis j'ai eu un moyen simple de convertir MySQL en SQLite.
Suivez ces étapes:
Vous devez d'abord installer SQLite DB Browser (très petit et rapide pour afficher les tables et les données)
Ouvrez votre fichier MySQL dans Notepad ou ce serait génial si vous ouvrez dans Notepad ++
Supprimer les premières lignes supplémentaires Contient des informations ou des requêtes et enregistrez-les.
Ouvrez le navigateur de base de données SQLite, créez une base de données, puis des tables et les mêmes types que dans la base de données MySQL.
Dans la barre de menus du navigateur de base de données SQLite, sélectionnez Fichier-> puis Importer les données Fichier MySQL que vous avez enregistré.
Il se convertira facilement en SQLite après la boîte de dialogue d'avertissement.
En cas d'erreur, supprimez plus de lignes supplémentaires si votre fichier MySQL a.
Vous pouvez également installer le logiciel de conversion MySQL vers SQLite sur une base d'essai, mais les informations que je donne pour la conversion concernent la durée de vie.
Cela a bien fonctionné si vos données n'ont pas de caractère comme l'apostrophe. Par exemple "Ceci est le livre de Peter" en sql dumb sera "Ceci est le livre de Peter". Cela entraînera une erreur de lancement de DB Browser, car il est difficile de supprimer des données volumineuses. Mais si vous importez les données de phpAdmin au format CSV vers DB Browser, cette importation sera réussie. J'espère que cette aide
Comment puis-je copier une seule table de la base de données de base de données et non de la base de données mysql entière?
Atul Vaibhav
Pour une seule table dans le passé, j'ai fait cela, mais il y a peut-être un meilleur moyen. Exportez la table au format csv avec les noms de colonne dans la première option de ligne cochée. Ensuite, en utilisant DB Browser pour SQLite, importez la table dans ma base de données sqlite existante en utilisant l'option d'importation de table à partir de csv. Vous devrez alors probablement entrer et modifier les champs au type dont vous avez besoin car je pense que tous les champs seront définis sur TEXT. Dans le projet sur lequel je travaillais, nous avons développé un processus dans lequel nous avons fait un appel à l'API pour renvoyer toutes les données dans une table, puis inséré / remplacé les données dans la base de données des applications.
Grant Luck
Cela semble fonctionner. Néanmoins, je ne trouve pas où se trouve le fichier de sortie. Pouvez-vous m'aider?
Pontios
1
J'ai essayé un certain nombre de méthodes sur ce fil, mais rien n'a fonctionné pour moi. Voici donc une nouvelle solution, que j'ai également trouvée très simple:
Installez RazorSQL . Fonctionne pour Mac, Windows et Linux.
Dans RazorSQL, connectez-vous à votre base de données, sur localhost par exemple. La conversion ne fonctionne pas avec les fichiers de vidage SQL.
Faites un clic droit sur votre base de données -> Conversion de base de données -> sélectionnez SQLite. Cela enregistrera un fichier txt avec toutes les sqliterequêtes nécessaires pour créer cette base de données.
Installez un gestionnaire de base de données SQLite, tel que DB Browser pour SQLite . Cela fonctionne sur n'importe quel système d'exploitation.
Créez une base de données vide, accédez à l'onglet Exécuter SQL et collez le contenu de l'étape 3.
Voilà, maintenant vous avez votre base de données SQLite.
RazorSQL semble juste construire un fichier * .sql "commun" avec des définitions de table et des insertions de données, mais rien de particulièrement spécifique à SQLite. Il n'a pas exporté de vues, ce qui est un gros inconvénient. Le client mysqldump qui vient avec MySql exporte aussi des vues mais il produit aussi beaucoup de trucs conditionnels etc. ce que SQLite ne digérera pas.
dalilander
0
Si vous avez de l'expérience, écrivez des scripts simples par Perl \ Python \ etc et convertissez MySQL en SQLite. Lisez les données de Mysql et écrivez-les sur SQLite.
J'aime le SQLite2009 Pro Enterprise Manager proposé par Jfly. Toutefois:
Le type de données MySQL INT n'est pas converti en type de données SQlite INTEGER (fonctionne avec DBeaver)
Il n'importe pas les contraintes de clé étrangère de MySQL (je n'ai trouvé aucun outil prenant en charge le transfert de contraintes de clé étrangère de MySQL vers SQlite.)
Dans la liste des outils de conversion, j'ai trouvé Kexi . Il s'agit d'un outil d'interface utilisateur permettant d'importer à partir de divers serveurs de base de données (y compris MySQL) dans SQLite. Lors de l'importation d'une base de données (par exemple depuis MySQL), elle la stocke au format Kexi. Le format Kexi est le format SQLite «natif». Alors copiez simplement le fichier kexi et ayez vos données au format sqlite
Si vous avez reçu un fichier de base de données et que vous n'avez pas installé le bon serveur (SQLite ou MySQL), essayez cet outil: https://dbconvert.com/sqlite/mysql/ La version d'essai permet de convertir les 50 premiers enregistrements de chaque table , le reste des données est filigrané. Il s'agit d'un programme Windows, et peut soit vider dans un serveur de base de données en cours d'exécution, soit vider la sortie dans un fichier .sql
Réponses:
Il existe un script mysql2sqlite.sh sur GitHub
Comme décrit dans l'en-tête, le script peut être utilisé comme ceci:
alternatives
la source
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776man mysql
ouman mysqldump
Voici une liste de convertisseurs . ( instantané sur archive.today )
Une autre méthode qui fonctionnerait même sur Windows mais qui est rarement mentionnée est la suivante: utilisez une classe ORM qui résume pour vous les différences de base de données spécifiques. par exemple, vous les obtenez en PHP ( RedBean ), Python (couche ORM de Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) etc.
c'est-à-dire que vous pouvez faire ceci:
la source
Sequel (Ruby ORM) a un outil en ligne de commande pour traiter les bases de données, vous devez avoir installé ruby, puis:
la source
gem install mysql
etgem install sqlite3
gem install pg
si vous voulez convertir depuis ou vers une base de données postgres, la suite devrait avoir des adaptateurs pour les principales bases de donnéesmysql
parmysql2
si vous utilisezmysql2
ruby-dev
package pour créer ces packages de gemmes natifs.Tous les schémas de base de données ne peuvent pas être convertis. MySQL est plus complexe et riche en fonctionnalités que SQLite. Cependant, si votre schéma est assez simple, vous pouvez le vider dans un fichier SQL et essayer de l'importer / le charger dans une base de données SQLite.
la source
J'ai rencontré le même problème il y a environ 2 jours lorsque j'ai dû convertir une base de données MySQL de 20 Go + en SQLite. Ce n'était en aucun cas une tâche facile et j'ai fini par écrire ce package Python qui fait le travail.
L'avantage d'être écrit en Python est qu'il est multiplateforme (contrairement à un script shell / bash) et peut être facilement installé à l'aide
pip install
(même sous Windows). Il utilise des générateurs et la segmentation des données en cours de traitement et est donc très efficace en mémoire.J'ai également fait des efforts pour traduire correctement la plupart des types de données de MySQL vers SQLite .
L'outil est également testé de manière approfondie et fonctionne sur Python 2.7 et 3.5+ .
Il est invocable via la ligne de commande mais peut également être utilisé comme une classe Python standard que vous pouvez inclure dans une orchestration Python plus grande.
Voici comment vous l'utilisez:
la source
.sql
fichier de vidage ou nécessite-t-il une connexion à une base de données MySQL installée?Sqlite a officiellement la liste des outils de conversion.
http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools
la source
Le moyen le plus simple de convertir MySql DB en Sqlite:
1) Générez un fichier de vidage sql pour votre base de données MySql.
2) Téléchargez le fichier sur le convertisseur en ligne RebaseData ici
3) Un bouton de téléchargement apparaîtra sur la page pour télécharger la base de données au format Sqlite
la source
J'ai trouvé la solution parfaite
Tout d'abord, vous avez besoin de ce script (mettez-le dans un fichier appelé 'mysql-to-sqlite.sh'):
Ensuite, sauvegardez une copie de votre base de données:
Et maintenant, exécutez la conversion:
Et si tout se passe bien, vous devriez maintenant avoir un fichier dumpfile.db qui peut être utilisé via sqlite3.
la source
il y a différentes facons de faire cela. J'ai aussi eu ce problème et j'ai beaucoup cherché, puis j'ai eu un moyen simple de convertir MySQL en SQLite.
Suivez ces étapes:
Vous devez d'abord installer SQLite DB Browser (très petit et rapide pour afficher les tables et les données)
Ouvrez votre fichier MySQL dans Notepad ou ce serait génial si vous ouvrez dans Notepad ++
Supprimer les premières lignes supplémentaires Contient des informations ou des requêtes et enregistrez-les.
Ouvrez le navigateur de base de données SQLite, créez une base de données, puis des tables et les mêmes types que dans la base de données MySQL.
Dans la barre de menus du navigateur de base de données SQLite, sélectionnez Fichier-> puis Importer les données Fichier MySQL que vous avez enregistré.
Il se convertira facilement en SQLite après la boîte de dialogue d'avertissement.
En cas d'erreur, supprimez plus de lignes supplémentaires si votre fichier MySQL a.
Vous pouvez également installer le logiciel de conversion MySQL vers SQLite sur une base d'essai, mais les informations que je donne pour la conversion concernent la durée de vie.
la source
Ma solution à ce problème sous Mac consistait à
Installer la suite
Si toujours nécessaire
puis utilisé ce qui suit basé sur la documentation Sequel bin_sequel.rdoc (voir Copier la base de données)
Un utilisateur Windows peut installer Ruby et Sequel pour une solution Windows.
la source
J'ai essayé un certain nombre de méthodes sur ce fil, mais rien n'a fonctionné pour moi. Voici donc une nouvelle solution, que j'ai également trouvée très simple:
sqlite
requêtes nécessaires pour créer cette base de données.Voilà, maintenant vous avez votre base de données SQLite.
la source
Si vous avez de l'expérience, écrivez des scripts simples par Perl \ Python \ etc et convertissez MySQL en SQLite. Lisez les données de Mysql et écrivez-les sur SQLite.
la source
J'aime le SQLite2009 Pro Enterprise Manager proposé par Jfly. Toutefois:
Le type de données MySQL INT n'est pas converti en type de données SQlite INTEGER (fonctionne avec DBeaver)
Il n'importe pas les contraintes de clé étrangère de MySQL (je n'ai trouvé aucun outil prenant en charge le transfert de contraintes de clé étrangère de MySQL vers SQlite.)
la source
Dans la liste des outils de conversion, j'ai trouvé Kexi . Il s'agit d'un outil d'interface utilisateur permettant d'importer à partir de divers serveurs de base de données (y compris MySQL) dans SQLite. Lors de l'importation d'une base de données (par exemple depuis MySQL), elle la stocke au format Kexi. Le format Kexi est le format SQLite «natif». Alors copiez simplement le fichier kexi et ayez vos données au format sqlite
la source
Si vous avez reçu un fichier de base de données et que vous n'avez pas installé le bon serveur (SQLite ou MySQL), essayez cet outil: https://dbconvert.com/sqlite/mysql/ La version d'essai permet de convertir les 50 premiers enregistrements de chaque table , le reste des données est filigrané. Il s'agit d'un programme Windows, et peut soit vider dans un serveur de base de données en cours d'exécution, soit vider la sortie dans un fichier .sql
la source