Página 1 de 1

MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

Publicado: 03 Feb 2012, 22:17
por jamaro
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.

Re: MDB2SQLite_jamaro: Conversor de Base de Datos Acces a SQ

Publicado: 04 Feb 2012, 12:15
por arkcrew
Buenas Jamaro,

Justo ahora quería empezar a mirar un poco como va el tema de las bases de datos con el SQLITE ya que no se, no entiendo bien como rula así que como el acces si que lo se manejar bien, con tu aplicación me va a ser muy útil!

Ya te contaré que tal rula!

Saludos!

Re: MDB2SQLite_jamaro: Conversor de Base de Datos Acces a SQ

Publicado: 05 Feb 2012, 23:55
por BasicOs
Buen aporte
tambien si lo deseas puedes hacer un modo batch si se ejecuta con /auto , que los mdb de la carpeta los pase a sqlite.

Y si lo deseas tambien ponerlo en función mdb2sqlite(baseorigen,basedestino,opcs) , por si hay que hacerlo más frecuentemente..

Salu22:)

Re: MDB2SQLite_jamaro: Conversor de Base de Datos Acces a SQ

Publicado: 06 Feb 2012, 10:00
por Ximorro
¡Excelente trabajo! :smt004 :smt007 :smt032 :smt041

Re: MDB2SQLite_jamaro: Conversor de Base de Datos Acces a SQ

Publicado: 06 Feb 2012, 13:54
por jamaro
arkcrew yo estoy empezando con SQLite y la verdad es que, en principio, no es muy complicado. La complejidad creo que depende del uso de las tablas, sus referencias,... que dependerá del propio programa. En Access "lo tenemos" relativamente fácil a la hora de crear relaciones, formularios, informes,... pero creo que con Autoit conseguiremos buenos resultados.

Quizás lo que me vea más complicado sea la salida de los datos en papel (Informes de Access), pero de momento, con tenerlo en pantalla me resultará suficiente.

BasicOS, gracias ;-) Echaré un vistazo a las opciones que comentas.

Ximorro gracias ;-)

Re: MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

Publicado: 11 Feb 2012, 14:06
por jamaro
En el primer mensaje 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.

Re: MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

Publicado: 18 Feb 2012, 00:48
por BasicOs
buen aporte. Nada como Sqlite o mysql para olvidar lo de base de datos "corrompida" y luego tener que limpiar y recuperar ;)
Esos tiempos del Access/VB :smt017 :smt017 :smt017 :smt022 :smt022 :smt022
Salu22:)