LAMP (PHP) 使用 MDBTools 驱动程序通过 ODBC 访问 Access 数据库

Posted

技术标签:

【中文标题】LAMP (PHP) 使用 MDBTools 驱动程序通过 ODBC 访问 Access 数据库【英文标题】:LAMP (PHP) accessing Access Database with ODBC with MDBTools Driver 【发布时间】:2012-04-10 13:30:04 【问题描述】:

谁能告诉我在带有 php 的 Ubuntu 上使用 unixODBC 驱动程序是否存在有限的 SQL 支持?我已经在 Ubuntu 11.10 上设置了一个基本的灯服务器,我正在尝试查询一个 Access 数据库。我已经安装了 php5-odbc 和 MDB 工具。下面是一些示例代码:

<?php

$conn = odbc_connect('logindb','','');

if (!$conn) 
   echo "failed";


$sql = "SELECT * FROM class";
//$sql = "SELECT class.desc, event_classes.event_class_id FROM class inner join
//event_classes on class.class_id = event_classes.class_id";

$rs = odbc_exec($conn, $sql);

while ($d = odbc_fetch_array($rs)) 
    var_dump($d);


?>

第一个查询,简单的选择,工作得很好。但是,当尝试执行联接(第二个注释查询)时,我收到 0 条记录。我能够在 Access 中的 SQL 编辑器中成功运行 SQL,所以我知道我的 SQL 是正确的,并且连接在那里工作。有没有人有这方面的经验?我知道 Linux 不是为了与专有的 Microsoft 产品兼容,但不幸的是,我必须在 Ubuntu 上读取 Access 数据库。非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

sourceforge 上的 mdbtools 自 2004 年以来一直没有更新。我看到有人将它放在 github 上,并且似乎做了一些小改动。它中的 SQL 支持从来没有那么好,它是只读的,我从使用 DBD::ODBC 在 Perl 下尝试它的经验中知道,很多测试都失败了。我想你会很难过。

还有其他更可靠的方法可以从 Linux 访问 MS Access 数据库,但据我所知,它们都是商业性的。要从 Linux 访问 MS Access 数据库,我知道以下几点:

Easysoft 有一个 ODBC-ODBC 桥(可用于使用 MS Access ODBC 驱动程序访问 Windows 机器上的 MS Access DB),但它需要在 Windows 机器上安装服务。 Easysoft 也有一个 MS Access ODBC 驱动程序,只要它在 Linux 中可见,就可以用于直接访问 mdb/accdb 文件。

还有其他来自 Openlink 的商业 ODBC 桥。

【讨论】:

【参考方案2】:

如果有人碰巧在寻找一个 hacky 解决方案,我最终使用 mdb-tools 将 access 数据库转换为 csv 文件(每个表 1 个),然后遍历 csv 执行“手动”连接。不是最好的解决方案,但它最终适用于相当小的桌子。希望对您有所帮助!

【讨论】:

以上是关于LAMP (PHP) 使用 MDBTools 驱动程序通过 ODBC 访问 Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章

python 使用mdbtools将.mdb转换为.sqlite和.csv

lamp脚本一键搭建

如何在 EC2 实例上安装 mdbtools?

在 Ubuntu ( Linux ) 上使用 Lamp 安装 Mongodb

CentOS 7.4 yum方式安装LAMP环境,并部署WordPress,使用XCache优化性能

CentOS 6.9 yum方式安装LAMP环境,并部署Discuz