1

谁能告诉我在带有 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 数据库。任何帮助是极大的赞赏。

4

2 回答 2

4

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 桥接器。

于 2012-04-10T14:47:29.183 回答
0

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

于 2014-06-10T16:52:48.353 回答