Как использовать файл MS-Access из Linux? - PullRequest
13 голосов
/ 18 декабря 2008

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

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

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

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

Ответы [ 7 ]

15 голосов
/ 18 декабря 2008

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

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

sudo apt-get install mdbtools

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

2 голосов
/ 19 декабря 2008

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

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

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

2 голосов
/ 18 декабря 2008

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

1 голос
/ 19 декабря 2008

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

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

1 голос
/ 18 декабря 2008

Из документации: Подключение к Microsoft Access . Однако, это, кажется, указывает на то, что вам нужен доступ, работающий на хосте Windows, и подключение через ODBC ... См. Также Известные проблемы .

0 голосов
/ 19 декабря 2008

Смотри мой предыдущий ответ на похожий вопрос. Это небольшой сценарий, чтобы сделать именно это.

Доступ DB5 к MySQL автоматически

0 голосов
/ 18 декабря 2008

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...