2012-04-10 10 views
1

UbuntuでunixODBCドライバを使用してSQLサポートが制限されている場合、誰でも教えてください。 Ubuntu 11.10で基本的なランプサーバをセットアップしましたが、Accessデータベースを照会しようとしています。 php5-odbcとMDB Toolsをインストールしました。ここにいくつかのサンプルコードがあります:MDBToolsドライバを使用してODBCを使用してAccessデータベースにアクセスするLAMP(PHP)

<?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); 
} 

?> 

最初のクエリは、単純な選択は、うまく動作します。しかし、結合(第2のコメント付きクエリー)を実行しようとすると、私は0のレコードを受け取ります。 AccessのSQLエディタでSQLを正常に実行できるようになりました.SQLが正しいことが分かり、そこでは結合が働いています。誰にもこれに関する経験はありましたか?私は、Linuxが独自のMicrosoft製品と互換性があるように作られていないことを知っていますが、残念ながら私はUbuntuでAccessデータベースを読む必要があります。どんな助けでも大歓迎です。

答えて

3

mdbtools on sourceforgeは2004年以来更新されていません。私は誰かがgithubに入れているのを見て、少し変更を加えたようです。その中のSQLサポートはそれほど良いことではありませんでした。読み取り専用で、PerlでDBD :: ODBCを使ってみる経験から、多くのテストが失敗しました。私はあなたがそれで苦労するつもりだと思う。

LinuxからMS Accessデータベースにアクセスする他のより信頼性の高い方法がありますが、それらはすべて私の知っている商用です。 LinuxからMS Accessデータベースにアクセスするには、私は次のことを知っています:

EasysoftはODBCアクセスブリッジを持っていますが、MS Access ODBCドライバを使ってWindowsマシン上のMS Accessデータベースにアクセスすることはできますが、 Windowsマシンにサービスをインストールする。 EasysoftにはMS Access ODBCドライバがあり、これはLinuxから見える限りmdb/accdbファイルへの直接アクセスに使用できます。

Openlinkの他の商用ODBCブリッジがあります。

0

誰かがハックな解決策を探している場合は、mdb-toolsを使用してアクセスデータベースをcsvファイル(テーブルごとに1つ)に変換した後、csvを繰り返して「手動」結合を実行します。最善の解決策ではありませんでしたが、かなり小さなテーブルで作業を終えました。それが役に立てば幸い!

関連する問題