[Perl] Algo de mayor interes...

Salvador Ortiz Garcia sog@msg.com.mx
25 Jan 2002 02:52:15 -0600


On Fri, 2002-01-25 at 01:03, Alejandro G. Bedoya wrote:
> Saludos!!!
>=20
>     Tengo el siguiente problemita, tenemos una base de datos en Access 97=
,
> que deber=E1 ser trasportada primero a un servidor Linux, ese archivo de
> Access lo debo de abrir en PERL solo para importar la informaci=F3n y
> convertirla a otra base de datos para luego imprimir reportes por web. El
> archivo yo lo tengo que recibir solo formato de access, alguien lo va a
> FTPear de una maquina Windows al Linux.

Porqu=E9 no =E9se alguien hace un dump desde Windows y lo manda al Linux?

>=20
>     Ciertamente se pueden abrir bases de datos de Access en PERL, ya hice=
 la
> prueba con mi maquina Windows donde hago todas mis pruebas...
>=20
> =3D=3D=3D=3D=3D=3D=3D
> #!perl
> use strict;
> use DBI;
>=20
> my $dbh =3D DBI->connect('DBI:ADO:prueba', undef, undef, {PrintError =3D>=
 1, +
> RaiseError =3D> 1});
> my $sth =3D $dbh->prepare('SELECT NOMBRE FROM Usuarios');
> $sth->execute;
> while (my @Record=3D$sth->fetchrow_array) {
>  print "$Record[0]\n";
>  }
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> El problema es que el archivo se llama "prueba.mdb" y tuve que darlo de a=
lta
> en el ODBC del control panel porque no lo puedo llamar directamente con e=
se
> nombre(la verdad no se pa que sirve eso, pero asi funciono). Es decir,
> funciona bien en mi m=E1quina Windows, porque tiene el ODBC del control p=
anel,
> no se puede abrir el archivo directamente.  Me imagino que cuando pase es=
te
> programa a Linux no va a servir, porque Linux no tiene precisamente el OD=
BC
> en el Control Panel.....
>=20
> Como le hago???
>=20
> Vi por ahi que hay el WIN32:ODBC, este es mejor???
>=20
> El unico chiste es abrir un archivo Access que esta en la maquina Linux.

Lamento decirte que tienes un problem=F3n, en Windows funciona por que
usas el m=F3dulo DBD::ADO que via Win32::OLE se comunica con ADO
(Microsoft Active Data Objects), que usando Jet (el driver de Access)
interpreta tu archivos *.mdb

En Linux no existen los =FAltimos tres componentes mencionados de forma
que aunque ADO.pm es perl puro, simplemente no jalar=E1.

De los componentes mencionados s=F3lo el =FAltimo conoce de las tripas de u=
n
archivo mdb, y ese no corre fuera de Windows.

Hoy lo m=E1s cerca que puede estar un programa en Linux de leer un *,mdb
es mediante mdbtools (http://mdbtools.sourceforge.net/).

As=ED que si lo quieres leer con perl y en una m=E1quina Linux tienes
b=E1sicamente dos opciones:=20

- Teniendo un Windows virtual dentro.
- Usando Data::MDBtools y cruzar los dedos para que mdbtools ya funcione
  suficientemente bien.

Saludos.

Salvador Ortiz.