Accdb чем открыть в linux

Как открыть файл.accdb в Ubuntu?

В качестве операционной системы, на которой я работаю, используется Ubuntu Jaunty Jackalope. Мне представили данные для проекта, над которым я работаю, в виде файла.accdb, созданного Microsoft Access. Я не владею копией Microsoft Access. У меня установлен Open Office, и я хотел бы установить любой программный пакет, доступный для моей операционной системы. Есть ли способ открыть или преобразовать этот файл, чтобы я мог просматривать и редактировать данные на моем компьютере? Есть ли другой формат, в котором база данных Access может быть сохранена так, чтобы я мог ее открыть?

8 ответов

Доступны два инструмента с открытым исходным кодом, однако они работают только с файлами формата MDB. Можете ли вы попросить поставщика файла ACCDB предоставить его вам в формате MDB?

Теперь Jackcess поддерживает все: Access 97 (только для чтения), 2000, 2003, 2007 и 2010 (чтение и запись), файлы.mdb и.accdb.

Сброс файла может быть так же просто, как

(конечно, вам нужен компилятор java, libcommons-logging-java, libcommons-lang-java, и вы должны передать имя файла.accdb в качестве первого и имя таблицы в качестве второго параметра).

Он использует Jackcess, так что вы получаете те же функциональные возможности без необходимости писать собственный код Java для выполнения этой основной задачи. Каждая таблица возвращается как отдельная CSV файл.

Надеюсь, это полезно. Это конечно было для меня.

Как следует из принятого ответа, MDB Tools выполняет свою работу. Чтобы экспортировать все таблицы в Linux в формат CSV, попробуйте следующую команду:

Ты можешь использовать mdbtools также в Windows через WSL (Ubuntu в Windows или Debian в Windows): затем установите его в консоли с помощью:

Я не уверен, если Wine подойдет, но это может стоить посмотреть.

Мы можем использовать драйвер JDBC UCanAccess для подключения к базам данных Access (.mdb и.accdb) в LibreOffice Base. Вот как я сделал это при чистой установке Ubuntu 14.04 LTS.

Сначала я установил сам LibreOffice Base

sudo apt-get установить libreoffice-base

Затем я загрузил UCanAccess в папку «Загрузки» и разархивировал его.

Я запустил LibreOffice (не Base, а только сам LibreOffice)

и выберите Инструменты> Параметры

На вкладке «Дополнительно» я нажал кнопку «Путь к классу…», а затем добавил следующие пять (5) файлов JAR с помощью кнопки «Добавить архив…»:

/home/abrar/Downloads/UCanAccess-2.0.9.5-bin/ucanaccess-2.0.9.5.jar/home/abrar/Downloads/UCanAccess-2.0.9.5-bin/lib/commons-lang-2.6.jar / home / abrar /Downloads/UCanAccess-2.0.9.5-bin/lib/commons-logging-1.1.1.jar/home/abrar/Downloads/UCanAccess-2.0.9.5-bin/lib/hsqldb.jar / home / abrar / Downloads / UCanAccess-2.0.9.5-bin / lib / jackcess-2.1.0.jar

Обратите внимание, что вы должны закрыть и снова открыть LibreOffice, чтобы новые значения пути к классу вступили в силу.

Затем я запустил LibreOffice Base и на шаге 1 мастера выбрал «Подключиться к существующей базе данных (JDBC)».

Файл Access, которым я хотел управлять, был назван «baseTest.accdb» в моей папке «Загрузки», поэтому на шаге 2 «URL-адрес источника данных» был

и «класс драйвера JDBC» был

На шаге 3 я оставил поле «Имя пользователя» пустым и просто нажал «Далее».

На шаге 4 я сохранил базу данных LibreOffice Base как «accdbTest.odb» в папке «Документы».

Когда мастер завершил работу, он открыл мою базу данных LibreOffice, и я увидел таблицы в файле.accdb.

Но сначала вы должны загрузить и разархивировать UCANACCESS отсюда: http://ucanaccess.sourceforge.net/site.html

Я вижу все таблицы в LibreOffice Base. Вот один из них:

Источник

how to use an MS-Access file from Linux?

So how can I use an Access file ( *.mdb ) in Linux? By use I mean changing tables, writing queries and so on.

Are there tools to convert it to another database format (mysql, postgresql or even gadfly)?

Also what problems may I encounter?

7 Answers 7

Although a bit dated, I’ve had good success with mdbtools which is a set of command line tools for accessing and converting Access databases to other formats. I’ve used it for importing databases into PostgreSQL.

If you’re running an Ubuntu variant you can install it with:

or you can download it from here.

You’re out of luck. Access has no real equivalent on Linux and while Kexi is an interesting alternative that can import Access files and aims to provide similar functionality, it doesn’t actually uses Access files once the data is imported.

If your assignment is to develop an Access application with forms etc as opposed to just using and mdb database as a store, then you can try a recent release of Wine with a compatible Access version (see compatibility list) or, even better, find a Windows machine where you’re sure it’s going to work.

Not to be forgotten, the use of a Virtual Machine loaded with Windows would help you achieve the same thing on your Linux box.

I am currently trying Access with Wine on Ubuntu and I seem to be getting there. I have found that I need to copy various dlls manually, but that could easily be lack of reading up on the subject.

From the documentation: Connecting To Microsoft Access. However, this seems to indicate that you need access running in a windows host and connect via ODBC. See also Known Problems.

You can work with Access through a connection (ODBC or OLEDB), as long as you only need to manage the «database» dimension of the file (tables and views, which are called «queries» in Access).

Once the connection is open (see here for connection strings), you can send SQL commands to your mdb database, such as (where cn is here a connection object):

Please note that MsAccess uses a specific DDL that looks like the standard T-SQL but is not really it. Check the syntax in MsAccess help.

Depending on your database (and its constraints, default values, primary keys used, relations, data validation rules, aso), transfering Access can be easy and straight or might not even be possible. You will encounter a problem each time your database implement an access-specific/non-standard SQL rule.

If you really need to convert your access data to something else, I’d adise you to (1) export it under MS-SQL (the free version will be ok, an upsizing wizard is available in Access or on this site), (2)use an additional tool like this one to generate a «CREATE DATABASE» SQL Script, including or not data inserts, (3) use this script to try to create the database and its data on another database server.

Источник

First, I installed LibreOffice Base itself

Then I downloaded UCanAccess to my Downloads folder and unzipped it.

I launched LibreOffice (not Base, just LibreOffice itself)

and chose Tools > Options

On the Advanced tab I clicked the “Class Path…” button

and then added the following five (5) JAR files using the “Add Archive…” button:

Note that you must close and re-open LibreOffice for the new Class Path values to take effect.

Then I launched LibreOffice Base, and in Step 1 of the wizard I chose “Connect to an existing database (JDBC)”

The Access file I wanted to manipulate was named “baseTest.accdb” in my Downloads folder, so in Step 2 the “Datasource URL” was

and the “JDBC driver class” was

In Step 3, I left the “User name” field empty and just clicked “Next >>”.

In Step 4, I saved the LibreOffice Base database as “accdbTest.odb” in my Documents folder.

This solution is collected from here. Thanks Gord Thompson, you helped me a lot.

Источник

Аналоги Access для Linux

Когда небольшие предприятия, общественные организации и другие подобного размера компании понимают, что им нужно где-то хранить свои данные, они, в первую очередь вспоминают о Microsoft Access. Это будет правильным выбором если вы уже платите за подписку Microsoft и не против использовать проприетарное программное обеспечение.

Но это не единственный вариант и если вы предпочитаете использовать свободное программное обеспечение или у вас недостаточно бюджета на покупку продуктов Microsoft, для вас тоже есть решение. Существует несколько приложений баз данных с открытым исходным кодом, которые являются достойной альтернативой для Microsoft Access или Apple FileMaker. В этой статье мы собрали лучшие аналоги Access для Linux.

Лучшие аналоги Access для Linux

1. LibreOffice Base

Base по умолчанию включает в себя драйвера, которые поддерживают несколько многопользовательских движков баз данных, среди которых есть и базы данных с открытым исходным кодом: MySQL, MariaDB и PostgreSQL, а также другие JDBC и ODBC совместимые базы данных. Встроенные мастера и шаблоны таблиц позволяют новым пользователям быстро приступить к работе по созданию таблиц и запросов, а также построению форм и отчетов таких как счета, отчеты о продажах и списки клиентов. В сети интернет есть очень много руководств по использованию программы, а также можно найти сертифицированного агента поддержки, который решит ваши проблемы.

Установщики доступны для Linux, MacOS, Windows и Android. LibreOffice распространяется под лицензией Mozilla Public License v2, поэтому вы можете не только свободно использовать и распространять программу, но и поучаствовать в её разработке. Это лучшая альтернатива Access для Linux.

2. DB Browser for SQLite

DB Browser for SQLite позволяет пользователям создавать и использовать базу данных SQLite без необходимости знания сложного синтаксиса SQL команд. Это, а также простой табличный интерфейс и встроенные мастера делают программу отличным решением для новых пользователей баз данных.

За время разработки приложение уже несколько раз меняло имена. Изначально оно называлось Arca Database Browser, затем было выбрано имя SQLite Database Browser. В 2014 году, чтобы избежать конфликта с SQLite название было изменено на текущее.

Встроенные в программу мастера позволяют пользователям легко создавать и модифицировать файлы баз данных, таблицы, индексы, записи, импортировать и экспортировать данные, создавать и выполнять запросы и искать в таблице. Установщики есть для Windows, MacOS и большинства Linux дистрибутивов.

DB Browser for SQLite распространяется по двум лицензиям: Mozilla Public License Version 2 и GNU General Public License Version 3. Исходный код программы может быть загружен из официальной страницы проекта.

3. Kexi

У окружения рабочего стола KDE тоже есть свой офисный пакет под названием Calligra Suite. В качестве программы для работы с базами данных здесь используется Kexi. Также сюда входят такие программы: Words (текстовый процессор), Sheets (табличный процессор), Stage (презентации) и Plan (менеджер проектов).

Как полноценный компонент проекта KDE, Kexi создана для использования в окружении KDE Plasma, однако это не ограничивает её область использования только KDE пользователями. Программа также может быть установлена в Linux и BSD дистрибутивах, использующих Gnome, а также в MacOS и в Windows.

На официальном сайте программы сказано, что она разрабатывается потому что нет других быстро развивающихся программ для работы с базами данных, которые были бы достаточно мощными, недорогими, управляемыми открытыми стандартами и переносимыми на многие операционные системы, смартфоны и аппаратные платформы. В программе есть все стандартные функции, которые можно было бы ожидать. Это проектирование баз данных, хранение данных, выполнение запросов, обработка данных и так далее.

Kexi доступна под свободной лицензией LGPL и вы можете скачать её исходный код из официальной Wiki.

4. nuBuilder Forte

NuBuilder Forte разработан так, чтобы людям было как можно проще им пользоваться. Это браузерный инструмент для разработки веб приложений для работы с базами данных. Он имеет очень простой интерфейс и много удобных инструментов, включая поддержку drag & drop, которые позволяют создавать базы данных очень быстро.

Как в любом другом веб-приложении данные доступны везде с помощью браузера. Все данные хранятся в базе данных MySQL и могут быть в любой момент экспортированы в виде одного файла. В программе используются стандартные языки веб программирования (HTML, PHP, JavaScript и SQL), что позволяет разработчикам быстро начать работу. До полноценной замены MS Access здесь ещё далеко, но работать с программой можно.

Программа nuBuilder Forte распространяется под лицензией GPLv3.0 и доступен для загрузки на Github.

Источник

Как работать с MS Access в Linux

Многие пользуются Аксесом… даже в продакшене… даже по сей день. Посему, случаются моменты, когда кому-то захочется подключиться к этой БД из какого-нибудь неожиданного места. Например с юниксового сервера. Конечно же, подключиться захочется не просто так, а для использования данных из Аксеса в веб-приложении. И, без всякого сомнения, появится желание использовать эти данные совместно с информацией из других, более современных БД.

Итак, я хочу описать несколько подходов к общению с существом, называемым MS Access. Посему, исходная задача такова: установить соединение с MS Access из Ruby on Rails приложения или из PostgreSQL (используя FDW) и получить доступ к данным, желательно, в реальном времени.

Ниже я постараюсь собрать всю информацию, относящуюся к вышеописанно задаче и попытаюсь описать нетривиальные случа и подводные табуретки. Надеюсь, это описание сэкономит время кому-нибудь… либо просто, в некоторой степени, позабавит уважаемую публику.

Сразу же tldr для тех кому важны только факты и мнение автора по этому вопросу.

Конвертация в CSV

Для начала, опишу простое рабочее решение. Оно гарантированно работает на Ubuntu 14.04. Должно работать на других дистрибутивах Linux. И не требует каких-либо высших/сакральных знаний, навыков и прочей магии.

Есть такая штука mdbtools. Ставится она очень просто:

Подробности о её зависимостях, ручной сборке, возможностях пакета и о многом другом можно найти на страничке GitHub’а.

Сей пакет предоставляет кучу разных инструментов для работы с Аксесом. Всю кучу рассматривать не будем, а остановимся на одном. Том самом, который умеет превращать mdb-файлы в csv:

В результате получим csv-файл с содержимым указанной таблицы. Далее, сей файл можно подвергнуть всем мыслимым и немыслимым обработкам и истязаниям, потому что csv — это безумно простой и широко распространёный формат.

Выполнение запросов в MS Access

Теперь более сложная задача: выполнить SQL-запрос, имея в руках mdb-файл и машину с чем-нибудь юниксовым. Нетрудно догадаться, что нужно поставить ещё пару пакетов и создать несколько конфигов.

Во-первых, понадобится ODBC. Это стандартное API для общения с БД. В Юниксе для этих целей существует unixODBC. Его установка очень проста:

Во втором пакете содержится libmdbodbc.so, который понадобится чуть ниже.

Следующим шагом нужно найти подходящий ODBC-драйвер для MS Access. Ближайшим доступным является драйвер из mdbtools. Далее, нужно поковыряться в конфигах: описать драйвер и объявить БД.

Драйвер описываем в /etc/odbcinst.ini:

А БД объявляем в /etc/odbc.ini:

Стоит отметить, что в «Driver» нужно указывать имя драйвера, который описан в odbcinst.ini.

Больше про odbcinst.ini и odbc.ini можно найти здесь.

Итак, конфигурирование закончили. Теперь можно приступить к выполнению запросов. Для этих целей воспользуемся утилитой isql из пакета unixODBC:

Если всё сделано правильно, то должна появиться консоль для выполнения запросов:

На последок, стоит отметить, что существует аналог isql с поддержкой юникода. Он называется iusql.

Странности isql

Честно говоря, утилита isql довольно упорота. В ней куча ограничений на синтаксис и никакого дружелюбия и понимания пользователя. Например: поставил точку с запятой в конце выражения — получи ошибку и попробуй угадай из-за чего она. Никаких подсказок, советов и прочих прелестей современной разработки здесь нет. Это не PotgreSQL, который любезно скажет что вы ошиблись в выражении и предложит правильный вариант. Здесь вас просто пошлют и даже не сообщат причину. Посему, для хоть какого-то облегчения работы с isql была создана оболочка pyodbc-cli. С её помощью можно хоть как-то ослабить борьбу с isql и сосредоточиться на написании запросов.

Экзотические кодировки таблиц/колонок

Ходит много слухов о параметре ‘Charset’, который влияет на используемую коловую страницу. Вот пример использользования этого параметра:

Влияние этого параметра на работу isql замечено не было.В isql я могу работать как с mdb-файлами, содержащими кириллицу, так и со обычными юникодовыми mdb-файлами. В это же время, утилита iusql вне зависимости от параметра ‘Charset’ выдавала много вопросительных знаков (вот примерно таких: ��������) при работы с кириллическим mdb-файлом.

Альтернативы для isql

Альтернативой для isql является mdb-sql из пакета mdbtools. Для этой утилиты не нужны ini-файлы. Нужно просто натравить её на конкретный mdb-файл:

На все вопросы по использованию утилиты хорошо ответит man-страница. Единственная особенность: вышеупомянутый кириллический mdb-файл утилита проглотить не смогла. С юникодовыми файлами проблем не было.

Путь Ruby/Rails

Сейчас середина 2016 года, последний релиз MS Access был в 22 сентября 2015 года. Но вот незадача, последние работы над адаптером для ActiveRecord датированы 2008 годом. Поэтому, у меня, как это принято, две новости: хорошая и плохая.

Начну с хорошей: существует odbc-rails и его реинкарнация activerecord-odbc-adapter.

А теперь плохая: как уже отмечалось выше, последние коммиты в репозиторий адаптера датированы 2008 годом и заявлена поддержка Rails и ActiveRecord версии один и два; посему, я не знаю как запустить его на Rails 3+ (и можно ли вообще это сделать). Причины моего незнания примерно следующие. Во-первых: у адаптера скверная документация (а скорее её отсутствие). А во-вторых: нет никакого желания лезть в исходники, разбираться и возвращать их к жизни. Так что если у вас достаточно знаний, опыта и времени — можете допилить и описать как этим пользоваться. Удачи вам в этом случае!

Ruby-ODBC

Раз с адаптером всё грустно, то можно посмотреть в другие стороны. Одна из сторон называется ruby-odbc.

Последнее обновление сего гема датировано 2011 годом, но, на текущий момент, он более-менее работает. Для установки гема нужно выполнить нехитрые действия:

Без пакета unixodbc-dev компиляция native extension отвалится с ошибкой: ERROR: sql.h not found.

Далее, мы предположим, что ODBC в системе сконфигурировано (то есть присутствуют файлы odbcinst.ini и odb.ini). В этом случае можно открыть irb и сделать следующее:

Больше информации о синтаксисе и о доступных командах гема ruby-odbc можно найти в директории ruby-odbc/test на GitHub’е.

Mdb gem

Сей гем предоставляет DSL’ку для работы с mdb-файлами. И она выглядит довольно мило. Но есть нюанс: гем — это просто Ruby-обёртка над вышеописанным mdbtools’ом. То есть, гем конвертирует mdb в csv и обрабатывает этот csv в памяти. Никакой магии и прямого обращения к БД.

Альтернатива для ODBC-драйвера

Cуществует коммерческая версия ODBC-драйвера для MS Access. Но не существует никакой фактической информации о нём. В оптимистичном варианте этот адаптер поможет с продвинутыми запросами в Access (драйвер из mdbtools много чего не умеет: нет LIMIT, GROUP, AS и тд). Но это только догадки. Что будет на самом деле можно узнать только купив его, либо взяв 14 дневный триал, который доступен после регистрации на сайте. Кроме этой информации не нашлось ни отзывов пользователей, ни каких-либо багрепортов, ни каких-либо упоминаний о том, что кто-то пользовался драйвером и он ему чем-то помог.

Путь PotgreSQL

Для Постгреса существует расширение OGR. Оно является частью GDAL. Который, в свою очередь, является огромной библиотекой по преобразованию растровых и векторных форматов геопространственных данных. Для наших текущих целей назначение библиотеки не имеет решительно никакого значения. Главное, что заявлено, что она умеет работать с mdb-форматом.

Установка

Для начала нужно поставить несколько зависимостей:

Сия команда потянет за собой тонну зависимостей… но это нормально. Первый набор пакетов для ogr_fdw, второй — для postgis.

Шаг второй: сбор pgsql-ogr-fdw из исходников. Вот небольшой мануал в стиле bash:

Да, можно взять make install, но мы же не хотим, чтобы котики страдали. В появившемся диалоге от checkinstall нужно обязательно поправить параметр «version». Нужно сделать его в формате «числа разделённые точками» (например: ‘0.1.0’). Иначе, с дефолтными значениями, сборка пакета упадёт.

Шаг три: пойти и поставить расширения в Postgres:

Есть подозрение, что postgis тут лишний, но в Readme на GitHub сказано что нужны оба, посему оставлю этот вопрос пытливым читателям.

Шаг четыре: время создавать FDW. В ogr_fdw есть два возможных пути для работы с Access. Первый использует системный ODBC. Подробности об этом варианте можно найти здесь. Второй — более интересный, использует формат MDB из OGR, который предоставляет прямой доступ к файлу используя Jackcess. Подбробности об этом варианте лежат тут. Ниже я опишу оба способа.

Напоследок, одно замечание: OGR — это чрезвычайно мощная штука; возможность работы с MS Access — это маленькая часть всего многообразия доступных форматов и, уважаемый читатель, может вполне резонно заявить, что это пальба из пушки по воробьям… но выбор не велик и кроме этой пушки никаких других орудий изыскать не удалось. И да, вот перечень всех поддерживаемых OGR’ом форматов.

Формат ORG ODBC

Этот подход использует системные настройки ODBC и работает по аналогии с вышеописанным osql и ruby-odbc, но внутри БД. Все доступные опции для инициализации FDW представлены на странице GDAL ODBC драйвера. Ниже я приведу лишь простой пример использования.

На сколько я понял из документации OGR, layer — в нашем случае, эквивалентен таблице БД.

Список всех layer’ов можно получить используя утилиту ogrinfo:

Основываясь на этом сообщении, можно предположить, что всё работает, но целевая БД (то бишь mdb-файл), не содержит требуемого Geo-формата данных и OGR спотыкается об это досадное недоразумение. Я не знаю как отучить его принудительно проверять формат предоставленной БД. Но некоторые пишут, что сей подход замечательно работает под Windows. В общем, если вы знаете как образумить OGR ODBC и заставить его работать с произвольным mdb-файлом, пожалуйста, скажите об этом, не держите это знание в себе.

Отдельный вопрос: как PG будет работать с кирилическими (да и с любыми другими нелатинскими) названиями таблиц и колонок. С одной стороны — Postgres’у без разницы как называется таблица/столбец, обернуть их в двойные кавычки и хоть спец.символы можно использовать. С другой стороны: кто его знает, применимо ли это к FDW, а проверить на конкретном примере пока не получается.

Формат ORG MDB

Сей подход основывается на Java-библиотеке Jackcess. Так как это Java и у неё свой богатый внутренний мир, то у этого подхода нет никаких связей с системным ODBC и, следовательно, проблемы с драйверами для MS Access для него чужды. Но есть другие особенности, которые опишу ниже.

Сразу предупрежу, что в силу «богатой» документации по всему описываемому процессу, отсутствию большого опыта с Java и некоторой монструозностью целевого пакета, рабочий вариант удалось собрать за 3 дня и

20 полных пересборок пакета. Поэтому сразу скажу о некоторых вещах:

Во-первых: нужно поставить openjdk-6-jdk.

После бегло вдумчивого чтения исходников GDAL’а, создалось ощущение, что он поддерживает и openjdk-7-jdk. Но у меня не получилось заставить его работать с 7-й версией.

Далее, понадобится libgdal-dev.

Здесь нужно запомнить версию пакета. Она напрямую связана с версией пакета GDAL. В моём случае это версия 1.10.1.

Примечание: поддержка формата mdb начинается с версии 1.9.0.

Ну и на последок, нужно снести пакет gdal-bin, так как его расширенную версию мы и собираемся собрать из исходников.

Во-вторых: нужно скачать несколько JAR-ов (древних и не очень), а именно: jackcess-1.2.2.jar, commons-lang-2.4.jar и commons-logging-1.1.1.jar; затем, положить их в lib/ext. В моём случае, полный путь до этой директории следующий: /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/ext. Вышеозначенные версии JAR-ов можно найти внутри вот этой утилиты. Для меня, всё работает с любой более поздней версией commons-logging (1.*), с любой другой минорной версией commons-lang (2.*) и jackcess (1.*). Ошибки появлялись только при использовании следующей мажорной версии jaccess (2.1.4).

В-третьих: нужно скачать и сконфинурировать GDAL.

Здесь нужно перейти в ветку, соответствующую версии пакета libgdal-dev, коий устанавливали в пункте номер раз. В противном случае собранный бинарник будет несовместим с библиотеками.

Далее нужно звать configure. Существует целых два способа вызова. Простой:

и с явным указанием путей:

Второй вариант может быть полезен если в системе присутствует несколько версий Java (например, openjdk-6-jdk и openjdk-7-jdk) или если первый вариант не дал желаемого результата.

После окончания работы configure нужно найти заветное слово ‘yes’ напротив формата MDB.

В-четвёртых: нужно изыскать чашечку чая/кофе или чего покрепче и запустить сборку пакета.

Здесь нужно ответить на пару несложных вопросов и ждать. В моём случае ждать нужно было примерно 10 минут.

Здесь же нужно отметить, что пакет получится увесистым, около 300мб. Конечно же, можно выкинуть из него всё лишнее, собрать его руками и приблизиться к размеру пакета gdal-bin из репозитория (

900Kb), но это выходит за рамки повествования и, поэтому, описано не будет.

В-пятых: если что-то пошло не так, сборка пакета отвалилась, то гугл и светлый ум вам в помощь.

В-шестых: если всё прошло хорошо, то после checkinstall пакет должен был автоматически установиться и теперь нужно проверить, действительно ли полученные бинарники поддерживают формат mdb:

Если в выводе ogrinfo информации про mdb не нашлось, то перейдите к началу этой секции, перечитайте мануалы, посмотрите на зависимости, параметры системы, фазу луны и прочие атрибуты которые могут повлиять на компиляцию и итоговый бинарник, и попробуйте пересобрать всё это хозяйство ещё раз.

Если же команда и вывод совпали, то всё хорошо и самая мутная часть позади. Теперь ogrinfo может работать с mdb-файлами и предоставлять информацию об их содержимом:

В-седьмых: теперь можно настраивать FDW в Postgres. Вот небольшой скрипт с примером этого действа:

И, в общем-то, всё. В заключении этой секции скажу пару слов про «шифрованные» mdb-файлы.

Если FDW не может вытащить данные из Access, а ogrinfo ругается следующим образом:

то, скорее всего, у вас запароленный mdb-файл. В этом случае стоит посмотреть на FAQ из Jaccess и задуматься о допиле драйвера OGR Access. На сколько я понял, существует проект Jackcess Encrypt. Сей проект предоставляет CryptCodecProvider, который, в свою очередь, предоставляет реализацию интерфейса CodecProvider для Jackess и поддерживает некоторые форматы шифрования mdb-файлов. Но, к несчастью, текущий драйвер от GDAL никак не умеет работать с Jackcess Encrypt и, следовательно, никак не поддерживает шифрованные файлы. Так что, есть хорошее направление для работы в стане опенсорса.

Прочие FDW

Список всех существующих FDW для Postgres можно найти на официальной вики-странице. Там есть ZhengYang/odbc_fdw, в котором последний коммит датирован 2011 годом. И CartoDB/odbc_fdw, который активно развивается и поддерживает Postgres 9.5+. Так что выбор невелик.

Заключение

Работать с MS Access больно… вдвойне больно если нужно это делать под Linux. Так что сразу добрый совет: вытащите из аксеса данные в любую современную БД и избавитесь от вагона проблем. Если вытащить не получается, то работайте с аксесом в Windows. Там есть нормальный драйвер, предоставляемый Microsoft «из коробки», о стыковке Access и Postgres в Windows есть хоть какие-то статьи и примеры настройки и вообще продукты одной и той же фирмы, обычно, хорошо работают друг с другом. Если же и этой возможности нет, то у вас снова два выхода: превращать всё в CSV и работать с ним или пытаться напрямую обратиться к mdb-файлу. Первый вариант простой, работает «из коробки» и особых навыков не требует. Второй вариант гораздо сложнее, требует времени, нервов, прямых рук, имеет набор ограничений, подводных камней и прочих неприятных вещей. Посему, выбирайте с умом.

Источник

Операционные системы и программное обеспечение