2012-04-10 2 views
1

Может ли кто-нибудь сказать мне, существует ли ограниченная поддержка SQL с использованием драйверов unixODBC на Ubuntu с PHP? Я установил базовый сервер ламп на Ubuntu 11.10, и я пытаюсь выполнить запрос к базе данных Access. Я установил php5-odbc и MDB Tools. Вот пример кода:LAMP (PHP) доступ к базе данных Access с ODBC с помощью драйвера MDBTools

<?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. Любая помощь приветствуется.

ответ

3

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

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

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

Есть другие коммерческие мосты ODBC от Openlink.

0

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