Импорт данных из файлов Microsoft Access

Процедура импорта файлов и данные для импорта

Файл в формате .csv

Проприетарные форматы файлов — это зло. Прежде всего потому, что у пользователя может не быть альтернативы: никакая другая программа, кроме "родной", не даст возможность открыть и обработать данные файлы. Яркий тому пример — СУБД Microsoft Access. Если на компьютерах с Microsoft Windows пользователь при необходимости может купить себе копию программы (или, на худой конец, поставить распространяемую компанией-разработчиком среду выполнения Access 2010 и тем самым получить доступ к необходимым ему данным), то, например, для macOS никакой версии MS Access хотя бы с урезанным функционалом не существует вовсе (и компания Microsoft, похоже, в обозримом будущем не собирается её выпускать). Поэтому в настоящей заметке я поделюсь опытом решения данной проблемы на примере macOS 10.15 Catalina.

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

  1. С помощью сторонней утилиты или сервиса импортировать данные в доступный формат. Таким форматом я выбрал CSV — стандартный тестовый формат, предназначенный для представления табличных данных.
  2. Открыть файл или файлы .csv в доступном вам приложении. Это может быть СУБД (даже в самой простой версии — SQLite), графический инструмент для работы с базами данных или другой офисный пакет, поддерживающий работу с БД.

В качестве примера импорта файлов MS Access в заметке будет использована учебная база данных из 4-го издания книги "SQL за 10 минут" ("Sams Teach Yourself SQL in 10 Minutes, Fourth Edition"). База данных в формате Microsoft Access 2000, 2003 (файл .mdb) доступна для загрузки по данному адресу. База данных в формате Microsoft Access 2007, 2010, 2013 (файл .accdb) доступна для загрузки по данному адресу.

Примечание: CVS на самом деле является стандартом для обмена данными и представляет собой простой текстовый файл, каждая строка которого является строкой таблицы БД в виде значений с разделителями (обычно запятыми): RFC 4180.

Шаг 1 (вариант 1). Импорт данных с помощью онлайн-сервиса

Онлайн-конвертер на сайте RebaseData

Если файл относительно небольшой (до 10 мегабайт), то для импорта данных в формат CVS можно воспользоваться онлайн-сервисом с сайта RebaseData. Вы просто загружаете нужный файл .accdb или .mdb и затем скачиваете папку с конвертированными файлами (по числу таблиц в базе данных). В этой папке будут нужные нам файлы формата .csv с именами таблиц из первоначальной БД, например, Customers.csv, а также файлы с расширением .columns, в которых содержится информация о типах данных из первоначальных таблиц. Нам понадобятся только файлы CVS!

Шаг 1 (вариант 2). Импорт данных с помощью специальной утилиты

Утилита jetread

Можно также воспользоваться офлайновыми утилитами. В частности, утилита jetread с сайта EGGER APPS позволяет конвертировать файлы большого размера.

Загрузим утилиту, распакуем её, в ту же папку положим файл для конвертации (например, tysql.accdb), перейдем в терминале в эту папку и запустим утилиту командой:

./jetread tysql.accdb list-table

Утилита покажет нам наименования таблиц в файле. Теперь надо конвертировать каждую(!) из таблиц в отдельный файл .csv, подставляя в команду нужные имена таблиц, например:

./jetread tysql.accdb export Customers -fmt csv > Customers.csv

В результате у вас должно получиться 5 файлов:

Приложение MDB / ACCDB Viewer

Для работы с файлами MS Access и экспорта данных в другие форматы, в том числе CVS, разработчики консольной утилиты jetread создали также приложение с графическим интерфейсом MDB / ACCDB Viewer, однако за него придётся заплатить. В этом приложении, когда вы извлекаете данные с помощью команды Export CSV, надо выбрать переключатель экспорта All Tables, и тогда вы получите все нужные вам .csv-файлы сразу.

Импорт данных из приложения MDB / ACCDB Viewer

Шаг 2 (вариант 1). Экспорт данных в СУБД

В принципе, файлы .csv можно экспортировать в СУБД, в частности, в SQLite (началу работы с данной СУБД, кстати, посвящена отдельная заметка) и в режиме командной строки, но мы сделаем это при помощи замечательного графического инструмента — программы DB Browser for SQLite.

Создание базы данных в программе DB Browser for SQLite

После установки DB4S запускаем эту программу и командой Новая база данных создаем файл БД, например, tysql.db.

Отмена редактирования определения таблицы в DB Browser for SQLite

Когда появится следующее окно Редактирование определения таблицы, нажимаем на кнопку Отмена.

Импорт данных .cvs в DB Browser for SQLite

Далее мы по очереди загружаем данные из наших .csv-файлов командой Файл > Импорт > Таблицы из файла CSV... При этом не забудьте выбрать опцию Имена столбцов в первой строке!

Импортированные таблицы в DB Browser for SQLite

После того, как вы импортировали все 5 файлов CVS, сохраните изменения в БД. Всё, теперь с этой базой можно работать и с помощью команд языка SQL, и в графическом режиме (DB4S позволяет править данные в таблицах).

Шаг 2 (вариант 2). Экспорт данных в сторонний офисный пакет

Для работы с БД можно также использовать свободно распространяемый офисный пакет с открытым кодом LibreOffice.

Сначала надо скачать с официального сайта и установить актуальную версию пакета: саму программу и отдельно компонент для русского языка.

Программа LibreOffice

Запускаем LibreOffice и выбираем компонент Base.

Импорт данных в LibreOffice (начало)

Выбираем Соединиться с существующей базой данных и далее в раскрывающемся списке Текст, нажимаем на кнопку Далее.

Импорт данных в LibreOffice (продолжение)

Выбираем Путь к текстовым файлам, указываем папку с распакованными текстовыми файлами (кнопка Обзор), выбираем желаемый тип файлов — это Разделенные запятой значения (*.cvs) и нажимаем кнопку Далее.

Импорт данных в LibreOffice (окончание)

Нажимаем кнопку Готово.

Импортированные таблицы в LibreOffice Base

Сохраняем базу данных под нужным именем (по умолчанию используется открытый формат .odb). Всё, можно работать с базой данных! Запросы можно конструировать в интерактивном режиме, в том числе с помощью специальной программы-мастера, или же писать прямо на языке SQL.

При необходимости можно обратиться к справке на русском языке на сайте программы (проще всего это сделать с помощью кнопки F1 (fn+F1) или меню Справка > Справка по LibreOffice).

А вы знаете, что..?

Программа Numbers

Файл .csv можно открыть в приложении, которое работает с электронными таблицами, например, Numbers для macOS . Но когда мы имеем SQL-подобную БД, включающую несколько таблиц (а реляционные СУБД состоят больше чем из одной таблицы), импортировать сразу несколько файлов и воссоздать структуру БД при помощи редактора электронных таблиц у вас, увы, не получится...