Ayuda OnLine de GULiC
De como acceder «libremente» a los ficheros mdb de Access
Hoy me ha hecho falta acceder a una base de datos guardada en un fichero mdb, de Microsoft Access.
Para que no pierdan el tiempo buscando programas para romper las contraseñas de esos ficheros, les diré como acceder a esas tablas en solo 4 simples pasos 
El resultado será que pasaremos todos los datos de Access a MySQL sin darnos cuenta 
Comencemos:
PASO 1:: Instalar las herramientas necesarias.
apt-get install mdbtoolsPara otros sistemas, mirar en sus repositorios de paquetes o en sitio de las mdbtools.
PASO 2:: Extraer el esquema de todas las tablas de la base de datos original.
mdb-schema BD.mdb mysql > BD_esquema_mysql.sql
PASO 3:: Un listado de todas las tablas que forma la base de datos.
mdb-tables -S -1 BD.mdb > BD.txt
PASO 4:: Extraemos, ordenadamente, los datos de cada tabla, listos para insertar en nuestra futura base de datos basada en MySQL.
for tabla in `cat BD.txt`; do mdb-export -Q -I BD.mdb ${tabla}; done > datos.sql
Ahora, tendrán tanto el esquema para crear la nueva base de datos, como los datos, listos para insertarlos en ella…
Espero que estos apuntes le sean útiles a más de uno. Suerte 
- blog de lcabrera
- Añadir nuevo comentario
- 14370 lecturas
- Enviar Blog entry




Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por Martin (no verificado) el 21 Enero, 2009 - 14:28.Como puedo realizar esto mismo que tu explicas pero para PostgreSQL?? Agradezco mucho que alguien me conteste xq me estoy volviendo loco trantando de pasar una base de access a postgres.
Saludos
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por lcabrera el 21 Enero, 2009 - 15:30.El resumen rápido es que mdb-schema tabién te permite leer el mdb y exportar el esquema en formato postgresql. Mirate la página man de ese comando.
Aparte de eso, ¿Has probado con gmdb2, el visor gráfico de ficheros mdb?
Pues eso, espero que sea suficiente para realizar esa migración
Suerte
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por Anonimo (no verificado) el 21 Agosto, 2009 - 15:17.Hola ha todos
Por fi he encontrado un buen metodo para realizar la migracion de guidows a linux de mis archivos mdb.
Mi pregunta es si conocen alguna forma de realizar lo mismo desde codigo de programacion, concretamente Python. Pues estoy trabajando en una aplicación i me gustaria que fuese posible leer archivos mdb y tambien poder passar estos a MySQL, base de datos en la que se trabajara principalmente.
Atentamente
Carlos
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por aplatanado el 21 Agosto, 2009 - 16:08.Si la aplicación es para Linux, una posible opción sería:
http://www.parit.ca/software/pscproject.2008-04-21.9636009485
Otras opciones son las comentadas aquí:
http://bytes.com/topic/python/answers/24363-microsoft-access-read-linux-...
Si por ejemplo el programa fuera para Windows, el Python puede hablar con cualquier programa de Offce a través de COM.
También se podría utilizar ODBC para acceder a la base de datos, pero sólo para Windows hay un motor de ODBC libre para Python.
Para Linux ha uno que funciona sobre Java y otro que no es libre. Todo eso está mas o menos explicado en el enlace anterior.
—
May the Free Software Force be with you…
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por hector (no verificado) el 17 Diciembre, 2009 - 03:01.Hola, he intentado realizar los pasos indicados, pero el último me da un error en el que dice que la tabla no existe en la base de datos, las líneas son:
hector@PcHector:~$ mdb-schema barsotti.mdb mysql > barsottiesquemamysql.sql
hector@PcHector:~$ mdb-tables -S -1 barsotti.mdb > barsotti.txt
HASTA AQUÍ TODO BIEN, LUEGO…
hector@PcHector:~$ for ALUMNOS in ‘cat barsotti.txt’; do mdb-export -Q -I barsotti.mdb ${ALUMNOS}; done > datos.sql
Error: Table barsotti.txt does not exist in this database.
pd: “ALUMNOS” ES EL NOMBRE DE UNA TABLA DE LA BD “barsotti.mdb”
¿Serían tan amables de decirme qué puedo estar haciendo mal?….Muchisimas gracias!! y saludos desde Argentina
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por lcabrera el 17 Diciembre, 2009 - 07:58.Por lo que entiendo, parece ser que estás confundiendo el nombre de las tablas que pudieras tener en el mdb con el nombre del fichero que has generado. Revisa la lógica que estás empleando, a ver si mi intuición es cierta
Saludos
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por hector (no verificado) el 17 Diciembre, 2009 - 22:16.Ante todo, gracias por responder…salvo que interprete mal el significado de ‘tabla’ en la cuarta linea, ésta se refiere a una tabla de la BD (en mi caso llamada barsotti.mdb). Contenido del archivo barsotti.txt generado:
MSysObjects
MSysACEs
MSysQueries
MSysRelationships
MSysAccessObjects
ALUMNOS
CARRERASUNIVERSIDAD
MSysAccessXML
MATERIAS
INSMATCURSADO
INSCEXAMEN
NOTASEXAMENES
MATERIAREGULARIZADAS
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs
Como ves, la tabla ALUMNOS forma parte del archivo barsotti.txt, por eso la escribo así:
hector@PcHector:~$ for ALUMNOS in ‘cat barsotti.txt’; do mdb-export -Q -I barsotti.mdb ${ALUMNOS}; done > datos.sql
Error: Table barsotti.txt does not exist in this database.
Si esta mal, ¿como debo escribirla?..Gracias nuevamente.-
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por SiNiESTrO el 27 Diciembre, 2009 - 17:22.Prueba con:
for TABLA in $(cat barsotti.txt); do mdb-export -Q -I barsotti.mdb ${TABLA}; done > datos.sqlPuede que las comillas que usas en el bucle no sean las correctas para que el cat sea ejecutable. Usando $(cat barsotti.txt) es igual de válido.
Saludos
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por Topikito (no verificado) el 13 Enero, 2010 - 09:21.Hola chicos,
Me da un fallo de segmentación…
A ver si estoy haciendo algo mal:
Alguna idea?
También lo probé como dice Sini, y lo mismo.
Re: De como acceder «libremente» a los ficheros mdb de Access
Enviado por Topikito (no verificado) el 13 Enero, 2010 - 09:33.Bueno, fallo mio… no comprobé el fichero de salida. Está bien. El único problema es que los strings, me los saca tal cual, sin poner las comillas, entonces me da un error al insertarlo en el SQL.
Así es como sale. Alguien tiene alguna idea sin que sea hacer un script?