Risposte:
C'è uno script mysql2sqlite.sh su GitHub
Come descritto nell'intestazione, lo script può essere utilizzato in questo modo:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternative
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite gist.github.com/943776
man mysqloman mysqldump
Ecco un elenco di convertitori . ( snapshot su archive.today )
Un metodo alternativo che funzionerebbe anche su Windows ma che viene raramente menzionato è: utilizzare una classe ORM che astrae le differenze specifiche del database per te. es. li ottieni in PHP ( RedBean ), Python (livello ORM di Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ) ecc.
cioè potresti fare questo:
Sequel (Ruby ORM) ha uno strumento a riga di comando per gestire i database, devi aver installato ruby, quindi:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysqlegem install sqlite3
gem install pgse vuoi convertire da o in un db postgres, il sequel dovrebbe avere adattatori per i principali db
mysqlcon mysql2se si utilizzamysql2
ruby-devpacchetto per creare questi pacchetti gem nativi.
Non tutti gli schemi DB possono essere convertiti. MySQL è più complesso e ricco di funzionalità di SQLite. Tuttavia, se il tuo schema è abbastanza semplice, puoi scaricarlo in un file SQL e provare a importarlo / caricarlo in un DB SQLite.
Ho affrontato lo stesso problema circa 2 giorni fa quando ho dovuto convertire un database MySQL da 20 GB + in SQLite. Non è stato affatto un compito facile e ho finito per scrivere questo pacchetto Python che fa il lavoro.
Il vantaggio di essere scritto in Python è che è multipiattaforma (a differenza di uno script shell / bash) e può essere facilmente installato utilizzando pip install(anche su Windows). Utilizza generatori e blocchi dei dati elaborati ed è quindi molto efficiente in termini di memoria.
Mi sono anche impegnato a tradurre correttamente la maggior parte dei tipi di dati da MySQL a SQLite .
Lo strumento è anche accuratamente testato e funziona su Python 2.7 e 3.5+ .
È invocabile tramite riga di comando ma può anche essere usato come una classe Python standard che puoi includere in un'orchestrazione Python più ampia.
Ecco come lo usi:
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.
.sqlfile di dump o richiede la connessione a un database MySQL installato?
Sqlite ha ufficialmente un elenco di strumenti di conversione.
Il modo più semplice per convertire MySql DB in Sqlite:
1) Genera il file dump sql per il tuo database MySql.
2) Carica il file sul convertitore online RebaseData qui
3) Apparirà un pulsante di download sulla pagina per scaricare il database in formato Sqlite
Ho trovato la soluzione perfetta
Innanzitutto, hai bisogno di questo script (inseriscilo in un file chiamato '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
Quindi, scarica una copia del tuo database:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
E ora, esegui la conversione:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
E se tutto va bene, ora dovresti avere un dumpfile.db che può essere utilizzato tramite 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
Ci sono diversi modi per farlo. Ho anche avuto questo problema e ho cercato molto e poi ho ottenuto un modo semplice per convertire MySQL in SQLite.
Segui questi passi:
Per prima cosa è necessario installare SQLite DB Browser (molto piccolo e veloce per visualizzare tabelle e dati)
Apri il tuo file MySQL in Blocco note o sarebbe fantastico se lo aprissi in Notepad ++
Rimuovi le prime righe extra che contengono informazioni o query e salvalo.
Apri SQLite DB Browser, Crea database, quindi Tabelle e gli stessi tipi presenti nel database MySQL.
Nella barra dei menu del browser SQLite DB selezionare File-> quindi Importa dati MySQL File che hai salvato.
Si convertirà facilmente in SQLite dopo la finestra di dialogo di avviso.
In caso di errore, rimuovere più righe aggiuntive se il file MySQL ha.
Puoi anche installare il software di conversione da MySQL a SQLite su base di prova, ma le informazioni che fornisco per la conversione sono a vita.
La mia soluzione a questo problema con un Mac era quella di
Installa il sequel
$ gem install sequel
Se ancora necessario
% gem install mysql sqlite3
quindi ha utilizzato quanto segue in base al documento Sequel bin_sequel.rdoc (vedere Copia database)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqliteUn utente Windows potrebbe installare Ruby e Sequel per una soluzione Windows.
Ho provato diversi metodi su questo thread, ma niente ha funzionato per me. Quindi ecco una nuova soluzione, che ho trovato anche molto semplice:
sqlite query necessarie per creare questo database.Questo è tutto, ora hai il tuo database SQLite.
Mi piace SQLite2009 Pro Enterprise Manager suggerito da Jfly. Però:
Il tipo di dati MySQL INT non viene convertito nel tipo di dati SQlite INTEGER (funziona con DBeaver)
Non importa i vincoli di chiave esterna da MySQL (non sono riuscito a trovare alcuno strumento che supporti il trasferimento dei vincoli di chiave esterna da MySQL a SQlite.)
Dalla lista di strumenti di conversione ho trovato Kexi . È uno strumento dell'interfaccia utente per importare da vari server DB (incluso MySQL) in SQLite. Quando si importa un database (diciamo da MySQL) lo memorizza in formato Kexi. Il formato Kexi è il formato SQLite "nativo". Quindi copia semplicemente il file kexi e ottieni i tuoi dati in formato sqlite
Se ti è stato fornito un file di database e non hai installato il server corretto (SQLite o MySQL), prova questo strumento: https://dbconvert.com/sqlite/mysql/ La versione di prova consente di convertire i primi 50 record di ogni tabella , il resto dei dati è filigranato. Questo è un programma Windows e può eseguire il dump in un server di database in esecuzione o può eseguire il dump dell'output in un file .sql