Доступ LAMP (PHP) к базе данных Access с помощью ODBC с помощью драйвера MDBTools

Может ли кто-нибудь сказать мне, есть ли ограниченная поддержка SQL с использованием драйверов unixODBC в Ubuntu с PHP? Я настроил базовый ламповый сервер на 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 записей. Мне удалось успешно запустить SQL в редакторе SQL в Access, поэтому я знаю, что мой SQL правильный, и соединение там работает. У кого-нибудь был опыт с этим? Я знаю, что Linux не был создан для совместимости с проприетарными продуктами Microsoft, но, к сожалению, мне нужно заставить работать чтение базы данных Access в Ubuntu. Любая помощь приветствуется.


person Tim S    schedule 10.04.2012    source источник


Ответы (2)


mdbtools на sourceforge не обновлялся с 2004 года. Я вижу, что кто-то разместил его на github и, похоже, внес несколько небольших изменений. Поддержка SQL в нем никогда не была такой хорошей, она была доступна только для чтения, и я знаю из опыта, что пробовал ее под Perl с DBD::ODBC, многие тесты провалились. Я думаю, вам придется нелегко с этим.

Есть и другие более надежные способы доступа к базе данных MS Access из Linux, но все они, насколько мне известно, коммерческие. Чтобы получить доступ к базе данных MS Access из Linux, я знаю следующее:

Easysoft имеет мост ODBC-ODBC (который можно использовать для доступа к базе данных MS Access на компьютере с Windows с помощью драйвера ODBC MS Access), но для этого требуется установка службы на компьютере с Windows. Easysoft также имеет драйвер MS Access ODBC, который можно использовать для прямого доступа к файлу mdb/accdb, если он виден из Linux.

Существуют и другие коммерческие мосты ODBC от Openlink.

person bohica    schedule 10.04.2012

Если кто-то ищет хакерское решение, я использовал mdb-tools для преобразования базы данных доступа в файлы csv (по 1 на таблицу), а затем повторял csv, выполняя «ручное» соединение. Не лучшее решение, но в итоге оно сработало для довольно маленьких таблиц. Надеюсь, поможет!

person Tim S    schedule 10.06.2014