Как использовать файл MS-Access из Linux?

Я изучаю вводный курс в базах данных, и одним из упражнений является работа с MS-Access. Однако я использую Linux дома, и хотя я могу использовать компьютерные классы в университете, это далеко не удобно (ограниченное время открытия - мое время обучения - в основном ночные).

Итак, как я могу использовать файл доступа (*.mdb) в Linux? При использовании я имею в виду изменение таблиц, запись запросов и т.д.

Есть ли инструменты для преобразования его в другой формат базы данных (mysql, postgresql или даже gadfly)?

С какими проблемами я могу столкнуться?

Ответ 1

Хотя я немного устарел, у меня был хороший успех с mdbtools, который представляет собой набор инструментов командной строки для доступа и преобразования баз данных Access в другие форматы. Я использовал его для импорта баз данных в PostgreSQL.

Если вы используете вариант Ubuntu, вы можете установить его с помощью:

sudo apt-get install mdbtools

или вы можете загрузить его из здесь.

Ответ 2

В настоящее время я пытаюсь получить доступ к Wine на Ubuntu, и я, кажется, добираюсь туда. Я обнаружил, что мне нужно копировать различные dll вручную, но это может быть легко отсутствием чтения по этому вопросу.

Ответ 4

Если у вас есть задание для работы с Access, то frigging найдите компьютер под управлением Windows и выполните свое упражнение на собственной платформе для Access. Совершенно бессмысленно делать что-либо еще, так как вы не узнаете ничего полезного о Access.

Если задание предназначено для использования хранилища данных Jet, то это что-то другое. И если это так, тогда вы должны были сформулировать свой вопрос по-другому. Я бы не рекомендовал использовать Jet на чем-либо, кроме собственной файловой системы Windows. Конечно, если проект предназначен для фактического чтения/записи данных в файл данных Jet, то вы не выполняете это задание, если вы не используете Windows по крайней мере в качестве узла ODBC.

Ответ 5

Вам не повезло. Доступ не имеет реального эквивалента в Linux, а Kexi - интересная альтернатива, которая может импортировать файлы Access и направлена ​​на предоставление аналогичных функций, Фактически для доступа к файлам доступа используются файлы Access.

Если ваше задание заключается в разработке приложения Access с формами и т.д., а не только с использованием базы данных mdb в качестве хранилища, то вы можете попробовать недавнюю версию Wine с совместимой версией Access (см. список совместимости) или, что еще лучше, найти машину Windows, в которой вы уверены, что она будет работать.

Не забывайте, что использование виртуальной машины, загруженной Windows, поможет вам добиться того же самого в вашем Linux-окне.

Ответ 6

Вы можете работать с Access через соединение (ODBC или OLEDB), если вам нужно всего лишь управлять размером базы данных (таблицы и представления, которые называются "запросами" в Access).

Как только соединение открыто (см. здесь для строк подключения), вы можете отправить команды SQL в свою базу данных mdb, например (где cn здесь объект соединения):

cn.execute "CREATE TABLE myTableName (myTable_id autoNumber, myTable_code Text, ...)"

Обратите внимание, что MsAccess использует определенный DDL, который выглядит как стандартный T-SQL, но на самом деле это не так. Проверьте синтаксис в справке MsAccess.

В зависимости от вашей базы данных (и ее ограничений, значений по умолчанию, используемых первичных ключей, отношений, правил проверки данных, aso) перенос доступа может быть простым и прямым или может быть даже невозможным. Вы будете сталкиваться с проблемой каждый раз, когда ваша база данных реализует правило SQL для доступа/нестандартное SQL.

Если вам действительно нужно преобразовать ваши данные доступа в нечто другое, я бы доволен вами (1) экспортировать его под MS-SQL (бесплатная версия будет в порядке, мастер обновления доступен в Access или на этом сайте), (2) используйте дополнительный инструмент, например этот создать "CREATE DATABASE" SQL Script, включая или не вставлять данные, (3) использовать этот script, чтобы попытаться создать базу данных и ее данные на другом сервере базы данных.