Live Chat Software by Kayako |
Миграция БД Core из MSSQL в PostgreSQL
Автор Maksim Efanov, Last modified by Maksim Efanov на 12 августа 2024 02:08 PM
|
|
Предварительные требования:
Контейнер для миграции (требуется доступ в интернет для загрузки образа): https://download.indeed-company.ru/s/Ven5SRetKDa8Q4a Если на машине с docker нет доступа в интернет, загрузите локальный образ (он также есть в дистрибутиве, в папке Misc): https://download.indeed-company.ru/s/VUdlmpY653KQOdC. Образ нужно будет подгрузить следующей командой: docker load -i pgloader.tar Процесс миграции 1. Переместите содержимое скачанного архива в любую удобную папку на Linux машине с docker. 2. Откройте файл config\ms.load и укажите данные для подключения к базам во 2 (MSSQL) и 3 (Postgre) строках: from mssql://{username}:{password}@{host}:{port}/{db_name} Пример: Порт для MSSQL можно найти в конфигурации SQL сервера: 3. Если был загружен локальный дистрибутив, выполните команду: docker load -i pgloader.tar 4. Запустите утилиту с помощью следующей команды (утилиту можно запускать с любой машины с доступом до MSSQL и PostgreSQL): docker-compose up После успешного завершения миграции, будет подобный вывод: 5. Запустите скрипт восстановления таблицы миграций migrations.sql.
psql -U postgres -d db_name < sql/migrations.sql Или, если PostgreSQL сервер установлен на Windows, можно выполнить скрипт с помощью утилиты C:\Program Files\PostgreSQL\{версия pgsql}\scripts\runpsql.bat.
\i sql/migrations.sql Пример использования runpsql.bat и выполнения утилиты: 6. При миграции данных из Microsoft SQL в PostgreSQL могут возникнуть ошибки из-за разного формата в типах данных. После успешной миграции данных, обязательно запустите скрипт, который устранит такие ошибки: psql -U postgres -d db_name < sql/datafix.sql Или через C:\Program Files\PostgreSQL\{версия pgsql}\scripts\runpsql.bat: \i sql/datafix.sql При успешном выполнении: Данный скрипт может завершиться с ошибкой, если использовать кодировку, отличную от UTF16. В powershell сменить кодировку можно так: $PSDefaultParameterValues['*:Encoding'] = 'utf16' | |
|