Интеграция PostgreSQL с MS SQL Server

Чтобы можно было локально тестировать механизм интеграции лучше установить 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

Далее будет предложено выбрать базу назначения. А дальше дело техники).

Оригинал статьи https://docs.microsoft.com/ru-ru/sql/integration-services/import-export-data/connect-to-a-postgresql-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15

Print Friendly, PDF & Email

Добавить комментарий