Как использовать файл 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 вручную, но это может быть легко отсутствием чтения по этому вопросу.
Ответ 3
Из документации: Подключение к Microsoft Access. Тем не менее, это, по-видимому, указывает на то, что вам нужен доступ на хосте Windows и подключаться через ODBC... См. Также Известные проблемы.
Ответ 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, чтобы попытаться создать базу данных и ее данные на другом сервере базы данных.
Ответ 7
В моем предыдущем ответе в подобном вопросе.
Это litle script, чтобы сделать именно это.
Автоматически использовать DB5 для MySQL