Доступ к SQL Server с помощью PXF

В этом примере показано, как подключиться к SQL Server 2016 с использованием PXF.

1. Установка PXF

sudo yum install pxf-matrixdb3-5.16.1-1.el7.x86_64.rpm -y
sudo mkdir /usr/local/pxfconf
sudo chown mxadmin.mxadmin -R /usr/local/pxfconf
sudo chown mxadmin.mxadmin -R /usr/local/pxf-matrixdb4

export PXF_HOME=/usr/local/pxf-matrixdb4
export PXF_CONF=/usr/local/pxfconf
export PATH=$PXF_HOME/bin:$PATH

cd $PXF_CONF/servers
mkdir sqlserv_server

2. Конфигурация

Инициализация PXF:

pxf cluster init

Скачайте драйвер JDBC по ссылке:
https://docs.microsoft.com/en-us/sql/connect/jdbc/using-the-jdbc-driver?view=sql-server-ver15
Файл: sqljdbc4.jar

Скопируйте драйвер JDBC в каталог библиотек PXF (требуется на всех узлах):

cp sqljdbc4.jar $PXF_CONF/lib

Синхронизируйте конфигурацию на всех узлах кластера:

pxf cluster sync

3. Запуск и проверка состояния кластера

Запустите службы PXF на всех узлах:

pxf cluster start

Проверьте состояние кластера:

pxf cluster status

4. Доступ к SQL Server

Создайте расширение:

postgres=# CREATE EXTENSION pxf_fdw ;
CREATE EXTENSION

Определите внешний сервер:

DROP SERVER sqlserv_server CASCADE;

CREATE SERVER sqlserv_server FOREIGN DATA WRAPPER jdbc_pxf_fdw OPTIONS (
    jdbc_driver 'com.microsoft.sqlserver.jdbc.SQLServerDriver',
    db_url 'jdbc:sqlserver://{ip}:{port};databaseName={database_name}',
    batch_size '10000',
    fetch_size '2000'
);

Создайте отображение пользователя:

CREATE USER MAPPING FOR mxadmin SERVER sqlserv_server OPTIONS (user '{username}', pass '{password}');

Создайте внешнюю таблицу:

CREATE FOREIGN TABLE foreign_sqlserver (
    id int4,
    banzu varchar(20),
    banzu_name varchar(50),
    realdate timestamp
)
SERVER sqlserv_server
OPTIONS (resource '{source_database_schema.table_name}');

Выполните запрос данных из SQL Server через внешнюю таблицу:

SELECT * FROM foreign_sqlserver LIMIT 10;