2008-08-10 20 views
19

Actualmente tengo una base de datos MySQL relativamente pequeña (4 o 5 tablas, 5000 filas) que me gustaría convertir a una base de datos sqlite. Como potencialmente tendría que hacer esto más de una vez, agradecería que alguien pudiera recomendar alguna herramienta útil, o al menos cualquier método fácil de replicar.¿Cuál es la mejor forma de convertir una base de datos mysql a sqlite?

(he completa de acceso de administrador a las bases de datos/máquinas involucradas.)

Respuesta

1

Si se trata de sólo unas pocas mesas que probablemente podría script de esto en su langauge scripting preferido y tenerlo todo hecho por el tiempo que tomaría leer todas las respuestas o rastrear una herramienta adecuada. De cualquier forma. :)

+0

r tiene bibliotecas sqlite y mysql que es bueno. puedes tirar y empujar desde dentro del mismo marco. – EngrStudent

2

Mientras un archivo de volcado de MySQL no supere el idioma SQLite consulta, debe ser capaz de migrar con bastante facilidad:

[email protected]~$ mysqldump old-database > old-database-dump.sql 
[email protected]~$ sqlite3 -init old-database-dump.sql new-database 

No he probado esto por mí mismo.

ACTUALIZACIÓN:

parece que tendrá que hacer un par de cambios de MySQL volcado. Utilizaría sed, o Google for it.

Solo la sintaxis del comentario, auto_increment & TYPE = declaración, y los caracteres de escape son diferentes.

4

He tenido que hacer cosas similares varias veces. El enfoque más fácil para mí ha sido escribir un script que extraiga de una fuente de datos y produzca un resultado para la nueva fuente de datos. Simplemente haga una consulta SELECT * para cada tabla en su base de datos actual, y luego vacíe todas las filas en una consulta INSERT INTO para su nueva base de datos. Puede volcar esto en un archivo o canalizarlo directamente a la interfaz de la base de datos.

No es bonito, pero sinceramente, parece ser una gran preocupación para cosas como esta. Esta técnica es rápida de escribir, y funciona. Esos son mis principales criterios para cosas como esta.

Es posible que desee comprobar this thread, también. Parece que un par de personas ya han reunido básicamente lo que necesitas. Sin embargo, no miré tan de cerca, así que no hay garantías.

2

Aquí es una lista de convertidores:


Un método alternativo que podría funcionar muy bien, pero rara vez se menciona es: utilizar una clase ORM que abstrae las diferencias de bases de datos específicas de distancia para ti. p.ej. obtener estos en PHP ( RedBean), Python (capa ORM de Django, Storm, SqlAlchemy), Ruby on Rails ( ActiveRecord), cacao ( CoreData)

es decir, usted puede hacer esto:

  1. cargar datos desde base de datos fuente usando la clase ORM.
  2. Almacenar los datos en la memoria o serializarlos en el disco.
  3. Almacene los datos en la base de datos de origen utilizando la clase ORM.
Cuestiones relacionadas