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:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternatives
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man 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:
Sequel (Ruby ORM) a un outil en ligne de commande pour traiter les bases de données, vous devez avoir installé ruby, puis:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
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ées
mysql
par mysql2
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.
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:
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 SQLite
database file, repacking it into a minimal amount
of disk space
--use-buffered-cursors Use MySQLCursorBuffered for reading the MySQL
database. 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.
.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.
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
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'):
#!/bin/bash
if [ "x$1" == "x" ]; then
echo "Usage: $0 <dumpname>"
exit
fi
cat $1 |
grep -v ' KEY "' |
grep -v ' UNIQUE KEY "' |
grep -v ' PRIMARY KEY ' |
sed '/^SET/d' |
sed 's/ unsigned / /g' |
sed 's/ auto_increment/ primary key autoincrement/g' |
sed 's/ smallint([0-9]*) / integer /g' |
sed 's/ tinyint([0-9]*) / integer /g' |
sed 's/ int([0-9]*) / integer /g' |
sed 's/ character set [^ ]* / /g' |
sed 's/ enum([^)]*) / varchar(255) /g' |
sed 's/ on update [^,]*//g' |
sed 's/\\r\\n/\\n/g' |
sed 's/\\"/"/g' |
perl -e 'local $/;$_=<>;s/,\n\)/\n\)/gs;print "begin;\n";print;print "commit;\n"' |
perl -pe '
if (/^(INSERT.+?)\(/) {
$a=$1;
s/\\'\''/'\'\''/g;
s/\\n/\n/g;
s/\),\(/\);\n$a\(/g;
}
' > $1.sql
cat $1.sql | sqlite3 $1.db > $1.err
ERRORS=`cat $1.err | wc -l`
if [ $ERRORS == 0 ]; then
echo "Conversion completed without error. Output file: $1.db"
rm $1.sql
rm $1.err
else
echo "There were errors during conversion. Please review $1.err and $1.sql for details."
fi
Ensuite, sauvegardez une copie de votre base de données:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
Et maintenant, exécutez la conversion:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
Et si tout se passe bien, vous devriez maintenant avoir un fichier dumpfile.db qui peut être utilisé via sqlite3.
you@prompt:~$ sqlite3 dumpfile.db
SQLite version 3.6.10
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
dg_cities dg_forms dg_surnames
dg_counties dg_provinces dg_user_accounts
dg_countries dg_provinces_netherlands
dg_first_names dg_states
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.
Ma solution à ce problème sous Mac consistait à
Installer la suite
$ gem install sequel
Si toujours nécessaire
% gem install mysql sqlite3
puis utilisé ce qui suit basé sur la documentation Sequel bin_sequel.rdoc (voir Copier la base de données)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Un utilisateur Windows peut installer Ruby et Sequel pour une solution Windows.
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.
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