# Перенос данных из БД MS Access в БД PostgreSQL

Данная статья описывает полный процесс перехода с БД MS Access в БД PostgreSQL.

Для переноса данных из MS Access в PostgreSQL потребуется воспользоваться [утилитой переноса данных](https://support.russianit.ru/books/pomoshhnik-arbitraznogo-upravlyayushhego/page/ustanovka-utility-perenosa-dannykh).

## Пошаговая инструкция по переносу данных в БД PostgreSQL

1. [Настроить утилиту переноса данных](https://support.russianit.ru/books/pomoshchnik-arbitrazhnogo-upravliaiushchego/page/nastroika-utility-perenosa-dannykh)
2. Создать пустую базу данных PostgreSQL [см. инструкцию по созданию БД PostgreSQL](https://support.russianit.ru/books/pomoshchnik-arbitrazhnogo-upravliaiushchego/page/nastroika-subd-postgresql)
3. Запустить утилиту переноса данных с помощью ярлыка `Перенести данные в БД PostgreSQL`   
    ![TransferUtil_ToPG_lnk.png](https://support.russianit.ru/uploads/images/gallery/2022-06/360005168020_TransferUtil_ToPG_lnk.png)  
    либо запустить утилиту из командной строки `TransferUtil.exe to-pg`
4. Запустите ПАУ и настройте подключение к базе данных PostgreSQL [см. инструкцию по настройке рабочего места ПАУ](https://support.russianit.ru/books/pomoshhnik-arbitraznogo-upravlyayushhego/page/nastroika-rabochego-mesta-pau-dlia-raboty-s-subd-postgresql)

## Описание процесса переноса данных утилиты переноса данных

### Порядок переноса данных

1. Подключение к базе данных MS Access указанной в файле конфигурации в параметре `ma_dbpath`;
2. Формирование дампа исходной базы данных MS Access. Дамп исходной базы данных -`access.ama.csv` будет расположен в папке `to-pg\output_[дата_переноса]\access.ama.csv`;
3. Подключение к СУБД PostgreSQL используя параметры `pg_server`, `pg_port`, `pg_dbname`, `pg_dbuser`и `pg_dbpassword` из файла конфигурации;
4. Проверка существования БД;
5. Проверка версии схемы данных БД, в том случае, если БД уже существует;
6. Создание таблиц в соответствии со схемой данных;
7. Перенос данных из дампа БД MS Access, полученного ранее.
8. Завершение переноса.

### Сообщения о ходе переноса данных

<div class="table-responsive" id="bkmrk-%D0%AD%D1%82%D0%B0%D0%BF-%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%9D%D0%B0%D1%87%D0%B0%D0%BB"><table class="table table-bordered table-striped table-condensed"><thead><tr><th>Этап</th><th>Сообщение</th></tr></thead><tbody><tr><td>Начало переноса данных из MS Access в PostgreSQL</td><td>`Начало переноса данных из БД MS Access в БД PostgreSQL`</td></tr><tr><td>Проверка наличия БД MS Access</td><td>`Проверка наличия БД MS Access`</td></tr><tr><td>БД MS Access существует</td><td>`БД MS Access существует - ОК`</td></tr><tr><td>Получаем версию схемы данных базы MS Access</td><td>`Получили версию схемы данных из БД MS Access - OK`</td></tr><tr><td>Начало подключения к БД MS Access</td><td>`Подключение к исходной БД MS Access`</td></tr><tr><td>Конец подключения к БД MS Access</td><td>`Подключились к исходной БД MS Access - ОК`</td></tr><tr><td>Начало формирования дампа</td><td>`Начали формировать дамп исходной БД - ОК`</td></tr><tr><td>Окончание формирования дампа</td><td>`Дамп исходной БД сформирован - ОК`</td></tr><tr><td>Начало проверки существования БД PostgreSQL</td><td>`Проверка наличия БД PostgreSQL`</td></tr><tr><td>Конец проверки существования БД PostgreSQL</td><td>`БД PostgreSQL существует - ОК`</td></tr><tr><td>Подключение к СУБД PostgreSQL</td><td>`Подключились к СУБД PostgreSQL`</td></tr><tr><td>Получение номера версии БД PostgreSQL</td><td>`Получили версию схемы данных из БД PostgreSQL - OK`</td></tr><tr><td>Проверка версии схемы данных БД</td><td>`Проверка версии схемы данных БД`</td></tr><tr><td>По результату проверки версии схем данных совпадают</td><td>`Версии схем данных совпадают - ОК`</td></tr><tr><td>По результату проверки версии схем, выявлено, что БД PostgreSQL пустая и туда можно переносить данные</td><td>`БД PostgreSQL пустая`</td></tr><tr><td>Создание таблиц согласно версии схемы данных</td><td>`Созданы таблицы согласно схеме данных - ОК`</td></tr><tr><td>Начало переноса данных из дампа БД MS Access</td><td>`Начали переносить данные из дампа БД`</td></tr><tr><td>Закончили переносить данных из дампа БД MS Access</td><td>`Закончили переносить данные из дампа БД MS Access - ОК`</td></tr><tr><td>Завершение переноса данных из MS Access в PostgreSQL</td><td>`Перенос данных завершен`</td></tr></tbody></table>

</div>### Список сообщений об ошибках

<div class="table-responsive" id="bkmrk-%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BE%D0%B1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B5-"><table class="table table-bordered table-striped table-condensed"><thead><tr><th>Сообщение об ошибке</th><th>Описание и рекомендации</th></tr></thead><tbody><tr><td>`Нет файла БД MS Access - Ошибка`</td><td>Проверьте права доступа для пути *%appdata%\\RussianIT\\TransferUtil\\to-pg*</td></tr><tr><td>`Не удалось подключиться к исходной БД MS Access - Ошибка`</td><td>Не удалось подключиться к исходной БД MS Access, указанной в параметре `ma_dbpath` файла конфигурации, необходимо проверить наличие файла БД</td></tr><tr><td>`Введёны неверные логин и пароль пользователя - Ошибка`</td><td>Необходимо проверить параметры подключения указанные в параметрах `pg_dbuser` и `pg_dbpassword` в файле конфигурации</td></tr><tr><td>`Нет доступа к СУБД PostgreSQL - Ошибка`</td><td>Необходимо проверить параметры подключения в конфиге `pg_hba.conf`</td></tr><tr><td>`Не удалось подключиться к СУБД PostgreSQL - Ошибка`</td><td>Необходимо проверить параметры подключения указанные в параметрах `pg_server`, `pg_port`, `pg_dbname`, `pg_dbuser` и `pg_dbpassword` в файле конфигурации</td></tr><tr><td>`БД PostgreSQL не существует - Ошибка`</td><td>БД PostgreSQL не создана, необходимо создать БД согласно [инструкции](https://support.russianit.ru/books/pomoshchnik-arbitrazhnogo-upravliaiushchego/page/nastroika-subd-postgresql)</td></tr><tr><td>`Версии схем данных не совпадают - Ошибка`</td><td>БД PostgreSQL уже была создана ранее и её версия отличается от версии БД MS Access, необходимо обновить уже существующую БД PostgreSQL в ПАУ, либо очистить базу, а затем произвести перенос.</td></tr><tr><td>`Не удалось сформировать дамп исходной БД - Ошибка`</td><td>В ходе формирования дампа исходной БД MS Access возникла ошибка, подробное описание будет указано в файле `TransferUtil.log`</td></tr><tr><td>`Не удалось создать таблицы в БД PostgreSQL - Ошибка`</td><td>В ходе создания необходимых таблиц в БД PostgreSQL произошла ошибка, подробное описание будет указано в файле `TransferUtil.log`</td></tr><tr><td>`Не удалось перенести данные из дампа в БД PostgreSQL - Ошибка`</td><td>В ходе переноса данных из дампа БД MS Access возникла ошибка, подробное описание будет указано в файле `TransferUtil.log`</td></tr></tbody></table>

</div>