Ayuda OnLine de GULiC

Anon9160

Ayuda
  • Temática: Puedes preguntarnos sobre Software Libre, Linux o GULiC. Otros temas pueden ser respondidos (o no!)
  • Acceso: Para mantener tu anonimato, se te ha asignado un nick al azar (Anon9160). Si deseas identificarte, puedes solicitar tu inscripción como socio ó iniciando sesión, si ya lo eres. En cualquier caso, si usas jabber, puedes informarte de cómo entrar a esta sala con tu cliente habitual, o bien entrando vía jwchat.
  • Uso: Para ver el chat más grande, usa ésta página. Si vas a pegar textos grandes, mejor usa nuestro pastebin. Para avisar de errores o problemas, usa nuestro trac.
  • Horarios: Nuestro huso horario es WET. No te extrañe si a las 5 de la mañana no te responde nadie.
  • Foros: Si nadie te responde al momento, deja tu mensaje en nuestro foro de libre acceso después de oir la señal... Beep!

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 Smiling

El resultado será que pasaremos todos los datos de Access a MySQL sin darnos cuenta Eye-wink

Comencemos:

PASO 1:: Instalar las herramientas necesarias.

apt-get install mdbtools

Para 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 Eye-wink

Re: De como acceder «libremente» a los ficheros mdb de Access

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

Imagen de lcabrera

Re: De como acceder «libremente» a los ficheros mdb de Access

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?

apt-get install mdbtools-gmdb

Pues eso, espero que sea suficiente para realizar esa migración

Suerte


Usuario habitual de Debian GNU/Linux

Re: De como acceder «libremente» a los ficheros mdb de Access

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

Imagen de aplatanado

Re: De como acceder «libremente» a los ficheros mdb de Access

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

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

Imagen de lcabrera

Re: De como acceder «libremente» a los ficheros mdb de Access

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 Smiling

Saludos

Re: De como acceder «libremente» a los ficheros mdb de Access

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
MATERIA
REGULARIZADAS
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.-

Imagen de SiNiESTrO

Re: De como acceder «libremente» a los ficheros mdb de Access

Prueba con:

for TABLA in $(cat barsotti.txt); do mdb-export -Q -I barsotti.mdb ${TABLA}; done > datos.sql

Puede 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 Eye-wink

Re: De como acceder «libremente» a los ficheros mdb de Access

Hola chicos,

Me da un fallo de segmentación… Sad

A ver si estoy haciendo algo mal:

roberto@roberto-linux:~$ cat esquema1.sql 
-------------------------------------------------------------
-- MDB Tools - A library for reading MS Access database files
-- Copyright (C) 2000-2004 Brian Bruns
-- Files in libmdb are licensed under LGPL and the utilities under
-- the GPL, see COPYING.LIB and COPYING files respectively.
-- Check out http://mdbtools.sourceforge.net
-------------------------------------------------------------

DROP TABLE T_Categorias;
CREATE TABLE T_Categorias
 (
    IdCategoria         int, 
    Nombre          varchar (100), 
    Depende         int, 
    Posicion            int
);
-- CREATE ANY INDEXES ...

DROP TABLE TABLA_CLIENTES;
CREATE TABLE TABLA_CLIENTES
 (
    IdCLIENTE           int, 
    CLIENTE         varchar (510), 
    ENLACE          varchar (510), 
    ESTADO          varchar (510), 
    CATEGORIA           int
);
-- CREATE ANY INDEXES ...



-- CREATE ANY Relationships ...

-- relationships are not supported for mysql


roberto@roberto-linux:~$ cat Clientes1.sql 
MSysObjects
MSysACEs
MSysQueries
MSysRelationships
MSysAccessObjects
T_Categorias
TABLA_CLIENTES
MSysNavPaneGroupCategories
MSysNavPaneGroups
MSysNavPaneGroupToObjects
MSysNavPaneObjectIDs

roberto@roberto-linux:~$ for tabla in `cat Clientes1.sql `; do mdb-export -Q -I Clientes1.mdb  ${tabla}; done > datos.sql
Fallo de segmentación

Alguna idea?

También lo probé como dice Sini, y lo mismo.

Re: De como acceder «libremente» a los ficheros mdb de Access

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.

INSERT INTO TABLA_CLIENTES (IdCLIENTE, CLIENTE, ENLACE, ESTADO, CATEGORIA) VALUES (1,texto texto texto,texto texto texto,texto texto texto,5)

Así es como sale. Alguien tiene alguna idea sin que sea hacer un script?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.