MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)
Publicado: 03 Feb 2012, 22:17
Sigo con mis progresos en mi intención de migrar mis bases de datos de Access a Autoit.
Ya estoy creándome un programa para una de las bases de datos que utilizo, haciendo un GUI, pero siempre voy saltando de una cosa a otra, y esta vez ha sido para hacer un programa que convierte una base de datos .mdb de Access a SQlite. Mejor dicho, de momento, lo que hace es crear una base de datos SQLite con las tablas y sus datos de una base .mdb.
Está pendiente, entre otras cosas, leer las "relaciones" de las tablas de Access y crearlas en SQLite con el uso de FOREIGN KEY y REFERENCES, pero ya llegará.
Como siempre, para llegar a esta solución he dado algunas vueltas.
El programa utiliza ActiveX Data Objects - ADO. (No sé si viene por defecto con todos los Windows)
He utilizado parte de las rutinas de access.udf de George (GEOSoft) Gedye (http://autoit.mvps.org/udf_code.aspx?udf=access), las cuales he modificado para mis necesidades.
Las primeras pruebas eran muy lentas, ya que utilizando la función _accessQueryLike() de George, la lectura de los registros de la .mdb se hacía una a una, empezaba por el primer registro, leía y saltaba al siguiente, así hasta llegar al último.
Indagando por internet, en la página http://www.w3schools.com/ado/met_rs_getrows.asp he visto que con el método GetRows del ADO se crea una matriz con todos los registro de una consulta RecordSet realizada, y si en una tabla con unos 11.000 registros, el primer método me tardaba varios minutos, con el segundo método apenas son unos segundos ¡Optimización conseguida!
El uso del programa es sencillo:
1. Seleccionar archivo .mdb (a partir de la carpeta desde la que se ejecuta el programa)
2. El programa crea un archivo .db con el mismo nombre que la base de datos origen.
Para probarlo, si no tenéis una Base de Datos .mdb podéis bajar un ejemplo (VERDULEROS.ZIP) de: http://superalumnos.net/base-de-datos-d ... uleros-mdb
El código creo que está bastante claro (aunque siempre se puede ordenar más) pero si alguien necesita alguna explicación de lo que he hecho, sólo tiene que preguntar.
Un saludo y ¡buenas conversiones!
EDITADO 11/02/2012: Subo el nuevo código, algo más estructurado y comentado. Ahora las tablas además de tener las PRIMARY KEYS también tienen las FOREIGN KEYS.
EDITADO 19/07/2012: A petición de un usuario, subo el programa ejecutable en exe.
Ya estoy creándome un programa para una de las bases de datos que utilizo, haciendo un GUI, pero siempre voy saltando de una cosa a otra, y esta vez ha sido para hacer un programa que convierte una base de datos .mdb de Access a SQlite. Mejor dicho, de momento, lo que hace es crear una base de datos SQLite con las tablas y sus datos de una base .mdb.
Está pendiente, entre otras cosas, leer las "relaciones" de las tablas de Access y crearlas en SQLite con el uso de FOREIGN KEY y REFERENCES, pero ya llegará.
Como siempre, para llegar a esta solución he dado algunas vueltas.
El programa utiliza ActiveX Data Objects - ADO. (No sé si viene por defecto con todos los Windows)
He utilizado parte de las rutinas de access.udf de George (GEOSoft) Gedye (http://autoit.mvps.org/udf_code.aspx?udf=access), las cuales he modificado para mis necesidades.
Las primeras pruebas eran muy lentas, ya que utilizando la función _accessQueryLike() de George, la lectura de los registros de la .mdb se hacía una a una, empezaba por el primer registro, leía y saltaba al siguiente, así hasta llegar al último.
Indagando por internet, en la página http://www.w3schools.com/ado/met_rs_getrows.asp he visto que con el método GetRows del ADO se crea una matriz con todos los registro de una consulta RecordSet realizada, y si en una tabla con unos 11.000 registros, el primer método me tardaba varios minutos, con el segundo método apenas son unos segundos ¡Optimización conseguida!
El uso del programa es sencillo:
1. Seleccionar archivo .mdb (a partir de la carpeta desde la que se ejecuta el programa)
2. El programa crea un archivo .db con el mismo nombre que la base de datos origen.
Para probarlo, si no tenéis una Base de Datos .mdb podéis bajar un ejemplo (VERDULEROS.ZIP) de: http://superalumnos.net/base-de-datos-d ... uleros-mdb
El código creo que está bastante claro (aunque siempre se puede ordenar más) pero si alguien necesita alguna explicación de lo que he hecho, sólo tiene que preguntar.
Un saludo y ¡buenas conversiones!
EDITADO 11/02/2012: Subo el nuevo código, algo más estructurado y comentado. Ahora las tablas además de tener las PRIMARY KEYS también tienen las FOREIGN KEYS.
EDITADO 19/07/2012: A petición de un usuario, subo el programa ejecutable en exe.