Leer archivo mdb (access) de php en ubuntu

Por motivos de trabajo tengo que leer/escribir archivos de MS Access (*.mdb) utilizando PHP. Después de leer varios foros y documentos les dejo la solución que encontré.

Primero debemos instalar algunos software.


sudo aptitude install php5-odbc mdbtools libmdbtools libmdbodbc

Luego deben editar los siguientes archivos /etc/odbcinst.ini y /etc/odbc.ini


[MDBToolsODBC]
Description = MDB Tools ODBC drivers
Driver = /usr/lib/libmdbodbc.so.0
Setup =
FileUsage = 1
CPTimeout =
CPReuse =

En este archivo deben indicar el path del archivo .mdb que desen leer.


[DSS]
Description = DSS-TMP
Driver = MDBToolsODBC
Database = /home/stefano/DSS/DB.mdb

Luego para probar si la conexión esta correcta en la consola deben escribir


stefano@arda:~$ isql DSS

Y aparecerá un mensaje indicando que ya están conectados a su base de datos. Ahora sólo queda leer el archivo desde PHP para eso pueden usar el siguiente snippet.


".odbc_result($result,"TABLE_NAME");
}
?>

4 thoughts on “Leer archivo mdb (access) de php en ubuntu

  1. Robert

    Amigo es posible que uno suba un archivo de access y este pueda ser leido para extraer información de 2 tablas y luego borrarlas

  2. Franco

    Hola, no puedo acceder a los datos, la conexion esta bien, pero $result no me trae los datos. Alguna sugerencia.

  3. Pablo

    Buenas, muy interesante su explicación, me funciono muy bien. Ahora, me lee una primera tabla de ACCESS, cuando trato de leer la segunda, el programa se para inesperadamente, en el comando: $resultado = odbc_exec($conn, $sql);
    Yo guardo los nombres de las tablas en un arreglo y leo cada nombre en un ciclo:

    for ($i = 0; $i < count($aControl); $i++) {
    $sTabla = strtoupper($aControl[1]);
    echo "+++++ " . $sTabla . "\n";
    $sql = 'SELECT * FROM ' . $sTabla;
    $resultado = odbc_exec($conn, $sql);
    odbc_fetch_row($resultado, 1);
    do {
    $iF = 1;
    $nF = odbc_num_fields($resultado);
    while ($iF <= $nF) {
    echo (odbc_field_name($resultado, $iF) . ": " . odbc_result($resultado, $iF) . "\n");
    $iF++;
    }
    } while (odbc_fetch_row($resultado));
    }

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.