Respuestas:
Hay un script mysql2sqlite.sh en GitHub
Como se describe en el encabezado, el script se puede utilizar así:
./mysql2sqlite.sh myDbase | sqlite3 database.sqlite
alternativas
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776
man mysql
oman mysqldump
Aquí hay una lista de convertidores . ( instantánea en archive.today )
Un método alternativo que funcionaría incluso en Windows, pero que rara vez se menciona es: use una clase ORM que abstraiga las diferencias específicas de la base de datos. Por ejemplo, los obtienes en PHP ( RedBean ), Python (capa ORM de Django, Storm , SqlAlchemy ), Ruby on Rails ( ActiveRecord ), Cocoa ( CoreData ), etc.
es decir, podrías hacer esto:
Sequel (Ruby ORM) tiene una herramienta de línea de comandos para manejar bases de datos, debe tener ruby instalado, luego:
$ gem install sequel mysql2 sqlite3
$ sequel mysql2://user:password@host/database -C sqlite://db.sqlite
gem install mysql
ygem install sqlite3
gem install pg
si desea convertir desde o hacia una base de datos de postgres, la secuela debe tener adaptadores para las bases de datos principales
mysql
con mysql2
si está usandomysql2
ruby-dev
paquete para crear estos paquetes de gemas nativas.
No todos los esquemas de base de datos se pueden convertir. MySQL es más complejo y rico en funciones que SQLite. Sin embargo, si su esquema es lo suficientemente simple, puede volcarlo en un archivo SQL e intentar importarlo / cargarlo en una base de datos SQLite.
Enfrenté el mismo problema hace unos 2 días cuando tuve que convertir una base de datos MySQL de más de 20 GB a SQLite. De ninguna manera fue una tarea fácil y terminé escribiendo este paquete de Python que hace el trabajo.
La ventaja de que esté escrito en Python es que es multiplataforma (a diferencia de un script de shell / bash) y todos se pueden instalar fácilmente usando pip install
(incluso en Windows). Utiliza generadores y fragmentación de los datos que se procesan y, por lo tanto, es muy eficiente en la memoria.
También me esforcé en traducir correctamente la mayoría de los tipos de datos de MySQL a SQLite .
La herramienta también se prueba a fondo y funciona en Python 2.7 y 3.5+ .
Se puede invocar a través de la línea de comandos, pero también se puede usar como una clase estándar de Python que puede incluir en alguna orquestación de Python más grande.
Así es como se usa:
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
archivo de volcado o requiere conexión a una base de datos MySQL instalada?
Sqlite tiene oficialmente una lista de herramientas de conversión.
La forma más sencilla de convertir MySql DB a Sqlite:
1) Genere un archivo de volcado sql para su base de datos MySql.
2) Sube el archivo al convertidor en línea RebaseData aquí
3) Aparecerá un botón de descarga en la página para descargar la base de datos en formato Sqlite
Encontre la solucion perfecta
Primero, necesita este script (póngalo en un archivo llamado '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
Luego, descargue una copia de su base de datos:
you@prompt:~$ mysqldump -u root -p --compatible=ansi --skip-opt generator > dumpfile
Y ahora, ejecute la conversión:
you@prompt:~$ mysql-to-sqlite.sh dumpfile
Y si todo va bien, ahora debería tener un dumpfile.db que se puede usar a través de 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
Hay maneras diferentes de hacer esto. También tuve este problema y busqué mucho y luego obtuve una forma simple de convertir MySQL a SQLite.
Sigue estos pasos:
Primero necesita instalar SQLite DB Browser (muy pequeño y rápido para ver tablas y datos)
Abra su archivo MySQL en el Bloc de notas o sería genial si lo abre en el Bloc de notas ++
Quite las primeras líneas adicionales que contengan información o consultas y guárdelas.
Abra el navegador SQLite DB, cree la base de datos, luego las tablas y los mismos tipos que en la base de datos MySQL.
En la barra de menú del navegador SQLite DB, seleccione Archivo-> luego Importar archivo de datos MySQL que guardó.
Se convertirá fácilmente en SQLite After Warning Dialog.
Si hay un error, elimine más líneas adicionales si su archivo MySQL tiene.
También puede instalar MySQL to SQLite Converter Software a modo de prueba, pero la información que proporciono para la conversión es de por vida.
Mi solución a este problema al ejecutar una Mac fue
Instalar secuela
$ gem install sequel
Si todavía es necesario
% gem install mysql sqlite3
luego usó lo siguiente basado en el documento de Sequel bin_sequel.rdoc (ver Copiar base de datos)
sequel -C mysql://myUserName:myPassword@host/databaseName sqlite://myConvertedDatabaseName.sqlite
Un usuario de Windows podría instalar Ruby y Sequel para una solución de Windows.
Probé varios métodos en este hilo, pero nada funcionó para mí. Así que aquí hay una nueva solución, que también encontré muy simple:
sqlite
consultas necesarias para crear esta base de datos.Eso es todo, ahora tienes tu base de datos SQLite.
Me gusta el SQLite2009 Pro Enterprise Manager sugerido por Jfly. Sin embargo:
El tipo de datos INT de MySQL no se convierte al tipo de datos INTEGER de SQlite (funciona con DBeaver)
No importa constantes de clave externa de MySQL (no pude encontrar ninguna herramienta que admita la transferencia de restricciones de clave externa de MySQL a SQlite).
De la lista de herramientas de conversión encontré Kexi . Es una herramienta de interfaz de usuario para importar desde varios servidores de base de datos (incluido MySQL) a SQLite. Al importar alguna base de datos (digamos de MySQL), la almacena en formato Kexi. El formato Kexi es el formato SQLite "nativo". Así que simplemente copie el archivo kexi y tenga sus datos en formato sqlite
Si se le ha dado un archivo de base de datos y no ha instalado el servidor correcto (ya sea SQLite o MySQL), pruebe esta herramienta: https://dbconvert.com/sqlite/mysql/ La versión de prueba permite convertir los primeros 50 registros de cada tabla , el resto de los datos tiene una marca de agua. Este es un programa de Windows y puede volcar en un servidor de base de datos en ejecución o puede volcar la salida en un archivo .sql