LAMP (PHP) достъп до база данни на Access с ODBC с драйвер MDBTools

Може ли някой да ми каже дали има ограничена поддръжка на SQL при използване на unixODBC драйвери на Ubuntu с PHP? Настроих основен сървър за лампи на Ubuntu 11.10 и се опитвам да отправя запитване към база данни на Access. Инсталирах php5-odbc и MDB Tools. Ето примерен код:

<?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 DB на Windows машина с помощта на MS Access ODBC драйвер), но изисква инсталиране на услуга на 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