¡Funciona como un encanto! Aquí hay un poco de documentación: $ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlitegist.github.com/943776
kachar
El script simplemente extrae argumentos de la línea de comando y los pasa a mysqldump, por lo que puede obtener información sobre la configuración de puertos personalizados, etc.con man mysqloman mysqldump
Devin Howard
2
Vale la pena señalar que este script ha sido reemplazado por un sucesor que se mantiene aquí: github.com/dumblob/mysql2sqlite
drzax
Aún mejor para jugar con caracteres que no son ascii: $. / Mysql2sqlite.sh --default-character-set = utf8 -hHost -uUser -pPass db | sqlite3 db.sqlite gist.github.com/esperlu/943776#gistcomment-984448
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:
Cargue datos de la base de datos de origen utilizando la clase ORM.
Almacene datos en la memoria o serialícelos en el disco.
Almacene los datos en la base de datos de destino utilizando la clase ORM.
No te olvides gem install mysqlygem install sqlite3
Nick
1
y gem install pgsi desea convertir desde o hacia una base de datos de postgres, la secuela debe tener adaptadores para las bases de datos principales
Macario
2
reemplace mysqlcon mysql2si está usandomysql2
Carlosin
1
Nota: Necesitará el ruby-devpaquete para crear estos paquetes de gemas nativas.
Panda
1
Tuve que usar "gem install secuela mysql2 sqlite3" y luego "secuela mysql2: // usuario: contraseña @ host / base de datos -C sqlite: //db.sqlite" PERFECTO
unom
17
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.
Después de descargar su base de datos MySQL en un archivo, puede usar este script para convertirlo a SQLite github.com/dumblob/mysql2sqlite (como se menciona en la respuesta de @David_LeBauer).
Paul Rougieux
7
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.
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 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.
Hola @techouse, ¡esto se ve genial! ¿Hay alguna forma de que funcione con un .sqlarchivo de volcado o requiere conexión a una base de datos MySQL instalada?
vortek
¡Oye! Ummm, no, esto requiere una base de datos MySQL que funcione. Si tiene un volcado sin un servidor real, lo mejor que puede hacer es cambiar el archivo manualmente si sabe lo que está haciendo.
Klemen Tušar
@arkadianriver Te sugiero que siempre uses entornos virtuales con Python 😎
Klemen Tušar
5
Sqlite tiene oficialmente una lista de herramientas de conversión.
Esto funcionó bien si sus datos no tienen un carácter como apóstrofo. Por ejemplo, "Este es el libro de Peter" en sql mudo será "Este es el libro de Peter". Esto hará que DB Browser arroje un error, ya que para datos grandes es difícil de eliminar. Pero si importa los datos de phpAdmin como CSV a DB Browser, esa importación será exitosa. Espero que esto ayude
Seunope
1
Mi solución a este problema al ejecutar una Mac fue
¿Cómo puedo copiar solo una tabla de la base de datos, no toda la base de datos mysql?
Atul Vaibhav
Para una sola mesa en el pasado he hecho esto, pero puede haber una mejor manera. Exporte la tabla como csv con los nombres de las columnas en la opción de la primera fila marcada. Luego, usando DB Browser para SQLite, importe la tabla a mi base de datos sqlite existente usando la opción de importación de tabla desde csv. Luego, probablemente tendrá que ingresar y cambiar los campos al tipo que necesita, ya que creo que todos los campos se establecerán en TEXTO. En el proyecto en el que estaba trabajando, desarrollamos un proceso en el que hicimos una llamada a la API para devolver todos los datos en una tabla y luego insertamos / reemplazamos los datos en la base de datos de aplicaciones.
Grant Luck
Parece estar funcionando. No obstante, no puedo encontrar dónde está el archivo de salida. ¿Me puedes ayudar?
Pontios
1
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:
Instale RazorSQL . Funciona para Mac, Windows y Linux.
En RazorSQL conéctese a su base de datos, en localhost por ejemplo. La conversión no funciona con archivos de volcado SQL.
Haga clic derecho en su base de datos -> Conversión de base de datos -> seleccione SQLite. Esto guardará un archivo txt con todas las sqliteconsultas necesarias para crear esta base de datos.
Instale un administrador de base de datos SQLite, como DB Browser para SQLite . Funciona en cualquier sistema operativo.
Cree una base de datos vacía, vaya a la pestaña Ejecutar SQL y pegue el contenido del paso 3.
Eso es todo, ahora tienes tu base de datos SQLite.
RazorSQL parece simplemente construir un archivo "común" * .sql con definiciones de tabla e inserciones de datos, pero nada particularmente específico de SQLite. No exportó Vistas, lo cual es un gran inconveniente. El cliente mysqldump que viene con MySql también exporta vistas, pero también produce muchas cosas condicionales, etc. que SQLite no asimilará.
dalilander
0
Si tiene experiencia, escriba scripts simples de Perl \ Python \ etc y convierta MySQL a SQLite. Lea datos de Mysql y escríbalos en 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
Respuestas:
Hay un script mysql2sqlite.sh en GitHub
Como se describe en el encabezado, el script se puede utilizar así:
alternativas
fuente
$ ./mysql2sqlite.sh -h host -u MyUserName -pMySecretPassWord myDbase | sqlite3 database.sqlite
gist.github.com/943776man 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:
fuente
Sequel (Ruby ORM) tiene una herramienta de línea de comandos para manejar bases de datos, debe tener ruby instalado, luego:
fuente
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 principalesmysql
conmysql2
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.
fuente
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:
fuente
.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.
http://www2.sqlite.org/cvstrac/wiki?p=ConverterTools
fuente
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
fuente
Encontre la solucion perfecta
Primero, necesita este script (póngalo en un archivo llamado 'mysql-to-sqlite.sh'):
Luego, descargue una copia de su base de datos:
Y ahora, ejecute la conversión:
Y si todo va bien, ahora debería tener un dumpfile.db que se puede usar a través de sqlite3.
fuente
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.
fuente
Mi solución a este problema al ejecutar una Mac fue
Instalar secuela
Si todavía es necesario
luego usó lo siguiente basado en el documento de Sequel bin_sequel.rdoc (ver Copiar base de datos)
Un usuario de Windows podría instalar Ruby y Sequel para una solución de Windows.
fuente
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.
fuente
Si tiene experiencia, escriba scripts simples de Perl \ Python \ etc y convierta MySQL a SQLite. Lea datos de Mysql y escríbalos en SQLite.
fuente
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).
fuente
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
fuente
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
fuente