web-dev-qa-db-fra.com

Convertir MySQL en SQLite

Est-il possible de convertir MySQL en SQLite avec un outil gratuit sous Windows?

111
mullek

Il y a 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

70
David LeBauer

Voici une liste de convertisseurs:

Le lien semble en panne à présent, il est donc uniquement disponible via un capture instantanée sur archive.org , dernière mise à jour en 2011.


Une méthode alternative qui fonctionne 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 dans PHP ( RedBean ), Python (couche ORM de Django, Storm , - (SqlAlchemy ), Ruby sur Rails ( ActiveRecord )), Cocoa ( CoreData =) etc.

c'est-à-dire que vous pourriez faire ceci:

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

Sequel (Ruby ORM) dispose d’un outil en ligne de commande pour gérer les bases de données. Vous devez avoir Ruby installé, puis:

  $ gem install sequel mysql2 sqlite3 
  $ sequel mysql2://user:password@Host/database -C sqlite://db.sqlite
42
Macario

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 sauvegarder dans un fichier SQL et essayer de l'importer/le charger dans une base de données SQLite.

18
Assaf Lavie

De cette page Web: http://osenxpsuite.net

télécharger SQLite2009 Pro Enterprise Manager

Ce est gratuit. Il peut importer des données de la base de données Mysql. Je viens de convertir une base de données 17M. Il est parfait.

13
Jfly

J'ai trouvé la solution parfaite! jetez un oeil à: http://www.jbip.net/content/how-convert-mysql-sqlite

Tout d'abord, vous avez besoin de ce script (placez-le dans un fichier nommé '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, exportez une copie de votre base de données:

you@Prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile

Et maintenant, lancez 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
5
Paulo Luan

SQLite a officiellement la liste des outils de conversion.

http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools

4

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 this Python) qui fait le travail.

L’avantage de l’écriture dans Python est qu’elle est multiplateforme (contrairement à un script Shell/bash) et n’a que des dépendances minimales (qui peuvent toutes être installées facilement à l’aide de pip install). Il utilise des générateurs et une fragmentation des données en cours de traitement et est donc très efficace en termes de mémoire.

J'ai également fait des efforts pour traduire correctement la plupart des types de données de MySQL en SQLite .

Le script est invocable via la ligne de commande, mais peut également être utilisé comme classe standard Python que vous pouvez inclure dans une orchestration plus grande Python.

Voici comment vous l'utilisez:

usage: mysql2sqlite.py [-h] [-f SQLITE_FILE] [-u MYSQL_USER]
                       [-p MYSQL_PASSWORD] [-d MYSQL_DATABASE]
                       [--mysql-Host MYSQL_Host] [-c CHUNK] [-l LOG_FILE]

optional arguments:
  -h, --help            show this help message and exit
  -f SQLITE_FILE, --sqlite-file SQLITE_FILE
                        SQLite3 db file
  -u MYSQL_USER, --mysql-user MYSQL_USER
                        MySQL user
  -p MYSQL_PASSWORD, --mysql-password MYSQL_PASSWORD
                        MySQL password
  -d MYSQL_DATABASE, --mysql-database MYSQL_DATABASE
                        MySQL Host
  --mysql-Host MYSQL_Host
                        MySQL Host
  -c CHUNK, --chunk CHUNK
                        Chunk reading/writing SQL records
  -l LOG_FILE, --log-file LOG_FILE
                        Log file
4
techouse

Il y a différentes facons de faire cela. J'ai aussi eu ce problème et j'ai cherché beaucoup. Ensuite, j’ai eu un moyen simple de convertir MySql en Sqlite.

Suivez ces instructions:

Étape 1 : vous devez d'abord installer le navigateur SqliteDB (très petit et rapide pour afficher les tableaux et les données).

Étape 2 : ouvrez votre fichier MySql dans le Bloc-notes ou ce serait bien si vous ouvriez dans le Bloc-notes ++

Étape 3 : supprimez les premières lignes supplémentaires contenant des informations ou des requêtes et enregistrez-les.

Étape 4 : ouvrez Sqlite Db Brower, créez une base de données, puis des tables et les mêmes types que dans la base de données Mysql.

Étape 5 : dans la barre de menus de Sqlite Db Browser, sélectionnez Fichier-> puis Importer le fichier Mysql que vous avez enregistré.

Il se convertira facilement en dialogue après dialogue d'avertissement.

En cas d'erreur, supprimez d'autres lignes si votre fichier Mysql en contient.

Vous pouvez également installer Mysql to Sqlite Converter Software à titre d’essai, mais l’information que je vous donne pour la conversion est une durée de vie.

Vous pouvez également consulter ce didacticiel pour obtenir de l'aide supplémentaire: https://www.youtube.com/watch?v=UcAHsm9iwpw

J'espère que cette aide.

4
Uzair Qaiser

Moyen le plus simple de convertir une base de données MySql 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

3
Sandeep Yohans

Ma solution à ce problème avec un Mac était de

  1. Installez Ruby et une suite similaire à celle de Macario. J'ai suivi ce lien pour aider à configurer Ruby, mysql et sqlite3 Ruby on Rails pour Mac) OSX
  2. Installer suite

    $ gem install sequel
    

    Si nécessaire

    % gem install mysql sqlite3
    

    a ensuite utilisé les éléments suivants basés sur la documentation Sequel bin_sequel.rdoc (voir Copier une 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.

1
Grant Luck
1
David Benko

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:

  1. Installez RazorSQL . Fonctionne pour Mac, Windows et Linux.
  2. Dans RazorSQL, connectez-vous à votre base de données, par exemple sur localhost. La conversion ne fonctionne pas avec les fichiers de vidage SQL.
  3. 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 requêtes sqlite nécessaires à la création de cette base de données.
  4. Installez un gestionnaire de base de données SQLite, par exemple navigateur DB pour SQLite . Cela fonctionne sur n'importe quel OS.
  5. Créez une base de données vide, accédez à l'onglet Exécuter SQL et collez le contenu de l'étape 3.

Ça y est, vous avez maintenant votre base de données SQLite.

1
Vali Munteanu

J'aime le logiciel SQLite2009 Pro Enterprise Manager proposé par Jfly. Pourtant:

  • 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 depuis MySQL (je n’ai trouvé aucun outil prenant en charge le transfert des contraintes de clé étrangère de MySQL vers SQlite.)

0
Stefan

Si vous avez reçu un fichier de base de données et n’avez pas installé le bon serveur (SQLite ou MySQL), essayez cet outil: https://dbconvert.com/sqlite/mysql/ La version d’essai autorise la conversion. les 50 premiers enregistrements de chaque table, le reste des données est tatoué. Il s’agit d’un programme Windows, qui peut soit exporter dans un serveur de base de données en cours d’exécution, soit exporter un fichier .sql.

0
kurdtpage

Si vous avez de l'expérience, écrivez des scripts simples avec Perl\Python\etc et convertissez MySQL en SQLite. Lisez les données de Mysql et écrivez-les sur SQLite.

0
Evgeniy

Réponse non programmatique mais cela m'a fait gagner beaucoup de temps. convertisseur SQL en SQLite

Ici, j'ai pu convertir une base de données contenant 33 tables. A pris environ une minute.

  • Mon processus consistait à exporter (exporter) ma base de données MySQL.
  • Puis importez-le en utilisant le site mentionné ci-dessus.
  • Il a préparé une base de données sqlite pour moi data.sqlite, puis je l’ai ouverte dans le navigateur SQLite.
0
FabricioG

De liste des outils de conversion j'ai trouvé Kexi . C’est un outil d’interface utilisateur à importer dans SQLite à partir de divers serveurs de base de données (y compris MySQL). Lors de l'importation d'une base de données (par exemple de MySQL), elle est stockée au format Kexi. Le format Kexi est le format SQLite 'natif'. Donc, copiez simplement le fichier kexi et ayez vos données au format sqlite

0
Tushar Goswami