Чтобы можно было локально тестировать механизм интеграции лучше установить MSSQL Server Express
Внимание!!! Если сервер будет не виден, то нужно запустить «Обозреватель» — см. службу
Устанавливаем необходимые библиотеки для PostgreSQL 10
Примечание: полную инструкцию лучше смотреть на сайте https://github.com/tds-fdw/tds_fdw.git
- sudo apt-get install freetds-dev freetds-common
Далее собираем расширение:
git clone https://github.com/tds-fdw/tds_fdw.git cd tds_fdw make USE_PGXS=1 install
В процессе сборки может возникнуть ошибка которая будет требовать установки postgresql-server-dev-xx
Перед установкой компонента нужно выполнить:
sudo apt update sudo apt upgrade
Затем postgresql-server-dev-10
sudo apt install postgresql-server-dev-10
Перед использованием tds_fdw необходимо настроить FreeTDS. Настройка FreeTDS для подключения к MS SQL Server выполняется с помощью файла /etc/freetds/freetds.conf. Например, добавим такое содержимое:
[sqlexpress] host = localhost port = 53420 tds version = 7.1 instance = SQLEXPRESS
Чтобы узнать порт нужно выполнить команду:
tsql -S sqlexpress -U [username]
Теперь мы можем создать необходимые объекты в PostgreSQL:
-- Сам модуль CREATE EXTENSION tds_fdw; -- Сервер CREATE SERVER sql01 FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql01', database 'test_sql01', msg_handler 'notice'); -- Сопоставление пользователя CREATE USER MAPPING FOR public SERVER sql01 OPTIONS (username 'msuser', password 'userpass');
Здесь, mssql01 — название сервера в freetds.conf, pguser — пользователь PostgreSQL, msuser — пользователь MS SQL Server.
Импорт определения таблиц с MS SQL Server
IMPORT FOREIGN SCHEMA dbo FROM SERVER sql01 INTO dbo OPTIONS (import_default 'true');
Схемы dbo и dbo уже должны существовать. Команда принимает следующие опции:
- import_default — добавлять или нет выражение DEFAULT при описании столбцов таблиц (по умолчанию, false).
- import_not_null — добавлять или нет ограничение NOT NULL при описании столбцов таблиц (по умолчанию, true).
Оригинал статьи https://habr.com/ru/company/postgrespro/blog/309490/
Чтобы открыть доступ к серверу http://support.webecs.com/kb/a868/how-do-i-configure-sql-server-express-to-allow-remote-tcp-ip-connections-on-port-1433.aspx
Обратная интеграция из PostgreSql в MSSql
Все операции должны выполняться на стороне сервера на котором расположен MSSQL.
Нужно загрузить ODBC драйвер для определенной версии PostgreSql.
Чтобы проверить наличие драйверов можно воспользоваться следующим интерфейсом. Для этого в «Пуск» ввести ODBC и выбрать нужную разрядность.
Из выше указанного списка видно, что есть два драйвера после установки:
- PostgreSQL ANSI(x64)
- PostgreSQL Unicode(x64)
Для реализации процесса переноса данных из PostgreSql в MSSql нужно запустить Мастер импорта и экспорта (его можно найти либо через БД, либо в меню Пуск произвести его поиск).
При импорте данных нужно указать следующую информацию.
В поле Source->Driver указываем следующую строку
{PostgreSQL Unicode(x64)};Server=127.0.0.1;Port=5432;Database=mobnius-kes;UID=mobnius;PWD=*******
Подробнее об этом тут https://docs.microsoft.com/ru-ru/sql/integration-services/import-export-data/connect-to-an-odbc-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15
Далее будет предложено выбрать базу назначения. А дальше дело техники).