Página 1 de 1

Transformación de Access a txt

NotaPublicado: 2012-01-03 20:38 @901
por keparodo
¿Existe algún módulo Perl que pueda leer Access (mdb) y transformar cada base a un archivo txt?

Se agradece.

Re: Transformación de Access a txt

NotaPublicado: 2012-01-04 11:27 @519
por explorer
No lo hay porque el formato de fichero es propiedad de Micro$oft, aparte de que lo han ido cambiando con los años.

Una forma de acceder a su contenido, es por medio de un interfaz ODBC, por ejemplo, DBD::ODBC. Solo tienes que definir, en el Panel de Control de Windows, una fuente ODBC a partir de ese fichero (se supone que las bibliotecas DLL para leer .mdb están instaladas). Luego, solo queda hacer el programa correspondiente, con este módulo. Mejor dicho: el que realmente usaremos será DBI, pero al indicar en el programa un DSN a una fuente ODBC, DBI cargará DBD::ODBC. Esto, para Windows. Si estás en UNIX/Linux, usarás controladores externos, como unixODBC o iODBC.

Cualquiera de estas soluciones NO abre el fichero mdb de forma directa, sino lo que hace es dialogar con ODBC que a su vez dialogará con el motor Access, y éste sí que accederá al fichero.

En el documento DBD::ODBC::FAQ tienes muchas cuestiones resueltas. Por ejemplo, How do I access a MS-Access database from Linux?.

Re: Transformación de Access a txt

NotaPublicado: 2012-01-04 14:39 @652
por keparodo
Muchas gracias. Necesitaba confirmar el modo de lectura.

Re: Transformación de Access a txt

NotaPublicado: 2012-01-18 16:36 @733
por keparodo
Estimados, para leer Access con Perl, es necesario instalar un controlador ODBC-Access Driver V1.0. Se requiere licencia, pero para probar, dan una versión de prueba (lo pueden bajar desde easysoft.com). Una vez realizada la instalación del controlador, la aplicación queda:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $CONNECT = "DRIVER={Easysoft ODBC-ACCESS};mdbfile=".$nom_file_mdb.";readonly=yes;exclusive=no;ignore_rel=no";
  2. $dbh = DBI->connect("dbi:ODBC:$CONNECT", "", "") or print "ERROR -- $DBI::errstr";
  3. $sql= "select columna from tabla where condiciones";
  4. $sth = $dbh->prepare($sql) or die print "ERROR -- consulta SQL ODBC-ACCESS";
  5. $sth->execute || print "ERROR -- execute SQL ODBC-ACCESS");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Re: Transformación de Access a txt

NotaPublicado: 2012-01-19 11:07 @504
por explorer
Bueno, sí, también es esa una de las maneras posibles, comprando una licencia de un controlador propietario.