MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

y programas personales para otros como tu, puede que te corrijan ;)
Responder
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

Mensaje 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.
Adjuntos
MDB2SQLite_jamaro_11-FUNCIONAL.zip
Programa ejecutable comprimido en ZIP
(309.31 KiB) Descargado 376 veces
MDB2SQLite_jamaro.au3
Código del programa 20120211
(24.76 KiB) Descargado 287 veces
Última edición por jamaro el 19 Jul 2012, 17:23, editado 3 veces en total.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

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

Mensaje 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!
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

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

Mensaje 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:)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

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

Mensaje por Ximorro »

¡Excelente trabajo! :smt004 :smt007 :smt032 :smt041
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

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

Mensaje 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 ;-)
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

Mensaje 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.
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: MDB2SQLite_jamaro: Conversor Acces a SQLite (20120211)

Mensaje 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:)
Responder