8

私は Linux ユーザーなので、オープンソースで Linux に適したソリューションが望ましいでしょう。

4

3 に答える 3

7

MDB ツールは、Microsoft DLL を使用せずに MS Access データベース (mdb ファイル) からのデータのエクスポートを容易にするオープン ソース ライブラリとユーティリティのセットです。したがって、非 Windows OS はデータを読み取ることができます。別の言い方をすれば、彼らは MDB ファイルのレイアウトをリバース エンジニアリングしています。

Jackcessは、MS Access データベースから読み書きするための純粋な Java ライブラリです。これは、Health Market Science, Inc. の OpenHMS プロジェクトの一部です。アプリケーションではありません。GUI はありません。これは、他の開発者が Java アプリケーションを構築するために使用するためのライブラリです。

ACCESSdbは、Internet Explorer 内でローカルに利用可能な Microsoft Access データベース ファイルに動的に接続してクエリを実行するために使用される JavaScript ライブラリです。

Jackcess と ACCESSdb はどちらも MDB ツールよりも新しく、よりアクティブで、書き込みをサポートしています。

于 2010-05-06T17:58:44.620 に答える
2

これはおそらくあなたが望む答えではありませんが、これを行う最も安全な方法は、Visual Studio Express を取得し、ODBC コネクタを使用してデータベースを読み取り、ADO.NET Sqlite コネクタを使用してデータを書き出すことです。JETデータベースと対話するための一般的なサードパーティツールを見つけました... JETは恐ろしく、簡単にリバースエンジニアリングされることはありませんでした。

于 2010-04-01T12:02:51.860 に答える
1

トニーの答えを例で補足するには:

これは、Ubuntu 16.04 で MDB ツールを使用して sqlite に変換した方法です。

sudo apt install mdbtools

# define variables for easier copy/paste of the rest
in="my-jet4-file"
schema="$in-schema.sql"
out="$in.sqlite"

mdb-schema "$in" sqlite > "$schema"
sqlite3 "$out"          < "$schema"
mdb-tables -1 "$in" \
| while read table; do \
    mdb-export -I sqlite "$in" "$table" | sqlite3 "$out"; \
  done

これは Insert ステートメントを使用するため、非常に低速です。

より高速な代替手段は、.csv ファイルをエクスポート/インポートすることです。私はPostgresでそれをうまく使っていました:

#...
out="my_pg_db"

createdb "$out"
mdb-schema "$in" postgres   > "$schema"
psql -U postgres -d "$out" -f "$schema"
mdb-tables -1 "$in" \
| while read table; do \
    mdb-export -d'|' "$in" "$table" > "$table.csv"; \
    psql -d "$out" -c "COPY \"$table\" FROM '$table.csv' DELIMITER '|' CSV HEADER"
  done

最後に、Jackcess と Java を使用するmdb-sqliteもあります。Java と をインストールした後ant:

cd mdb-sqlite-1.0.2
ant dist
java -jar dist/mdb-sqlite.jar "$in" "$out"
于 2018-03-18T19:19:21.987 に答える