Как преобразовать базу данных JET в SQLite? - PullRequest
7 голосов
/ 01 апреля 2010

Я пользователь Linux, поэтому предпочтительнее решение с открытым исходным кодом для Linux.

Ответы [ 3 ]

7 голосов
/ 06 мая 2010

MDB Tools - это набор библиотек и утилит с открытым исходным кодом, облегчающих экспорт данных из баз данных MS Access (файлы mdb) без использования библиотек DLL Microsoft. Таким образом, ОС не Windows может читать данные. Или, другими словами, они осуществляют обратный инжиниринг макета файла MDB.

Jackcess - это чистая библиотека Java для чтения и записи в базы данных MS Access. Он является частью проекта OpenHMS от Health Market Science, Inc. Это не приложение. Там нет GUI. Это библиотека, предназначенная для других разработчиков для создания приложений Java.

ACCESSdb - это библиотека JavaScript, используемая для динамического подключения и запроса локально доступных файлов базы данных Microsoft Access в Internet Explorer.

И Jackcess, и ACCESSdb намного новее, чем инструменты MDB, более активны и поддерживают запись.

2 голосов
/ 01 апреля 2010

Вероятно, это не тот ответ, который вам нужен, но самый безопасный способ сделать это - получить Visual Studio Express и прочитать в базе данных с помощью коннектора ODBC, а затем записать данные с помощью коннектора ADO.NET Sqlite. Я нашел, как правило, сторонние инструменты для общения с базами данных JET ... JET ужасен и никогда не может быть легко переработан.

0 голосов
/ 18 марта 2018

Чтобы дополнить ответ Тони примерами:

Вот как я только что сделал преобразование с помощью инструментов MDB в sqlite в Ubuntu 16.04:

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

Это использует операторы вставки и довольно медленно.

Более быстрой альтернативой будет экспорт / импорт файлов .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

Наконец, есть также mdb-sqlite , который использует Jackcess и Java. После установки Java и ant:

cd mdb-sqlite-1.0.2
ant dist
java -jar dist/mdb-sqlite.jar "$in" "$out"
...