Копирование данных из PostgreSQL с помощью Фабрики данных Azure или Synapse Analytics

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается, как с помощью действия копирования в конвейерах Фабрики данных Azure и Synapse Analytics копировать данные из базы данных PostgreSQL. Это продолжение статьи об обзоре действия копирования, в которой представлены общие сведения о действии копирования.

Внимание

Новый соединитель PostgreSQL обеспечивает улучшенную поддержку PostgreSQL и более высокую производительность. Если вы используете устаревший соединитель PostgreSQL в решении, поддерживается только для обратной совместимости, см. статью о соединителе PostgreSQL (устаревшей версии).

Поддерживаемые возможности

Этот соединитель PostgreSQL предназначен для выполнения следующих возможностей:

Поддерживаемые возможности IR
Действие копирования (источник/-) (1) (2)
Действие поиска (1) (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.

В частности, этот соединитель PostgreSQL поддерживает PostgreSQL версии 7.4 и более поздних.

Необходимые компоненты

Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.

Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.

Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.

Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.

Начиная с версии 3.7 служба Integration Runtime предоставляет встроенный драйвер PostgreSQL, поэтому вам не потребуется устанавливать драйвер вручную.

Начало работы

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы для PostgreSQL с помощью пользовательского интерфейса

Выполните приведенные ниже действия, чтобы создать связанную службу для PostgreSQL с помощью пользовательского интерфейса на портале Azure.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Выполните поиск по запросу "Postgre" и выберите соединитель PostgreSQL.

    Выбор соединителя PostgreSQL.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Настройка связанной службы для PostgreSQL.

Сведения о конфигурации соединителя

Следующие разделы содержат сведения о свойствах JSON, которые используются для определения сущностей фабрики данных, относящихся к соединителю PostgreSQL.

Свойства связанной службы

Для связанной службы PostgreSQL поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение: PostgreSqlV2 Да
server Указывает имя узла — и при необходимости порт, на котором выполняется PostgreSQL. Да
port TCP-порт сервера PostgreSQL. No
database База данных PostgreSQL для подключения. Да
username Имя пользователя для подключения. Не требуется, если используется IntegratedSecurity. Да
password Пароль для подключения. Не требуется, если используется IntegratedSecurity. Да
sslMode Определяет, используется ли SSL в зависимости от поддержки сервера.
- Отключить: SSL отключен. Если серверу требуется SSL, подключение завершится ошибкой.
- Разрешить. Предпочитайте подключения, отличные от SSL, если сервер разрешает их, но разрешают SSL-подключения.
- Предпочитать: предпочитать SSL-подключения, если сервер разрешает их, но разрешать подключения без SSL.
- Требовать: сбой подключения, если сервер не поддерживает SSL.
- Проверка цс. Сбой подключения, если сервер не поддерживает SSL. Также проверяет сертификат сервера.
- Проверка полного выполнения. Сбой подключения, если сервер не поддерживает SSL. Также проверяет сертификат сервера с именем узла.
Параметры: отключить (0) / Разрешить (1) / Предпочитать (2 ) (по умолчанию) / Требовать (3) / Verify-ca (4) / Verify-full (5)
No
authenticationType Тип проверки подлинности для подключения к базе данных. Поддерживается только базовый. Да
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. No
Дополнительные свойства подключения:
schema Задает путь поиска схемы. No
Объединения Следует ли использовать пул подключений. No
connectionTimeout Время ожидания (в секундах) при попытке установить подключение, прежде чем завершать попытку и создать ошибку. No
commandTimeout Время ожидания (в секундах) при попытке выполнить команду, прежде чем завершать попытку и создать ошибку. Установите значение нулю для бесконечности. No
trustServerCertificate Следует ли доверять сертификату сервера, не проверяя его. No
sslCertificate Расположение сертификата клиента, отправляемого на сервер. No
sslKey Расположение ключа клиента для отправки сертификата клиента серверу. No
sslPassword Пароль для ключа сертификата клиента. No
readBufferSize Определяет размер внутреннего буфера Npgsql, используемого при чтении. Увеличение производительности может повысить производительность при передаче больших значений из базы данных. No
logParameters При включении значения параметров регистрируются при выполнении команд. No
timezone Возвращает или задает часовой пояс сеанса. No
encoding Возвращает или задает кодировку .NET, которая будет использоваться для кодирования и декодирования строковых данных PostgreSQL. No

Примечание.

Чтобы обеспечить полную проверку SSL через подключение ODBC при использовании локального Integration Runtime, необходимо явно использовать подключение типа ODBC вместо соединителя PostgreSQL и выполнить следующую конфигурацию:

  1. Настройте DSN на любых серверах SHIR.
  2. Поместите соответствующий сертификат для PostgreSQL в C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt на серверах SHIR. Именно в этом случае драйвер ODBC ищет > для SSL-сертификата, чтобы выполнить проверку при его подключении к базе данных.
  3. В подключении фабрики данных используйте подключение типа ODBC со строкой подключения, указывающей на DSN, созданное на серверах SHIR.

Пример:

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSqlV2",
        "typeProperties": {
            "server": "<server>",
            "port": 5432,
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "sslmode": <sslmode>,
            "authenticationType": "Basic"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример: хранение пароля в Azure Key Vault

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSqlV2",
        "typeProperties": {
            "server": "<server>",
            "port": 5432,
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
            "sslmode": <sslmode>,
            "authenticationType": "Basic"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Свойства набора данных

Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных. Этот раздел содержит список свойств, поддерживаемых набором данных PostgreSQL.

Для копирования данных из PostgreSQL поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type набора данных должно иметь значение: PostgreSqlV2Table Да
schema Имя схемы. Нет (если свойство query указано в источнике действия)
table Имя таблицы. Нет (если свойство query указано в источнике действия)

Пример

{
    "name": "PostgreSQLDataset",
    "properties":
    {
        "type": "PostgreSqlV2Table",
        "linkedServiceName": {
            "referenceName": "<PostgreSQL linked service name>",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "schema": [],
        "typeProperties": {
            "schema": "<schema name>",
            "table": "<table name>"
        }
    }
}

Если вы ранее использовали типизированный набор данных RelationalTable, он пока поддерживается и не требует изменений, но мы рекомендуем перейти на новую версию.

Свойства действия копирования

Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником PostgreSQL.

PostgreSQL в качестве источника

Для копирования данных из PostgreSQL в разделе source для действия копирования поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type источника действия копирования должно иметь значение: PostgreSqlV2Source Да
query Используйте пользовательский SQL-запрос для чтения данных. Например: "query": "SELECT * FROM \"MySchema\".\"MyTable\"". Нет (если для набора данных задано свойство tableName)

Примечание.

В именах схем и таблиц учитывается регистр. Заключите имя в "" (двойные кавычки) в запросе.

Пример:

"activities":[
    {
        "name": "CopyFromPostgreSQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<PostgreSQL input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "PostgreSqlV2Source",
                "query": "SELECT * FROM \"MySchema\".\"MyTable\""
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Если вы ранее использовали типизированный источник RelationalSource, он пока поддерживается и не требует изменений, но мы рекомендуем в дальнейшем использовать более новую версию.

Сопоставление типов данных для PostgreSQL

При копировании данных из PostgreSQL следующие сопоставления используются из типов данных PostgreSQL к промежуточным типам данных, используемым службой внутри службы. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.

Тип данных PostgreSql Промежуточный тип данных службы Тип данных промежуточной службы для PostgreSQL (устаревшая версия)
SmallInt Int16 Int16
Integer Int32 Int32
BigInt Int64 Int64
Decimal (точность <= 28) Decimal Decimal
Decimal (точность > 28) Неподдерживаемый String
Numeric Decimal Decimal
Real Single Single
Double Double Double
SmallSerial Int16 Int16
Serial Int32 Int32
BigSerial Int64 Int64
Money Decimal String
Char String String
Varchar String String
Text String String
Bytea Byte[] Byte[]
Timestamp DateTime DateTime
Timestamp with time zone DateTime String
Date DateTime DateTime
Time TimeSpan TimeSpan
Time with time zone DateTimeOffset String
Interval TimeSpan String
Boolean Boolean Boolean
Point String String
Line String String
Iseg String String
Box String String
Path String String
Polygon String String
Circle String String
Cidr String String
Inet String String
Macaddr String String
Macaddr8 String String
Tsvector String String
Tsquery String String
UUID Guid Guid
Json String String
Jsonb String String
Array String String
Bit Byte[] Byte[]
Bit varying Byte[] Byte[]
XML String String
IntArray String String
TextArray String String
NumbericArray String String
DateArray String String
Range String String
Bpchar String String

Свойства действия поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Обновление связанной службы PostgreSQL

Ниже приведены шаги, которые помогут обновить связанную службу PostgreSQL:

  1. Создайте связанную службу PostgreSQL и настройте ее, ссылаясь на свойства связанной службы.

  2. Сопоставление типов данных для последней связанной службы PostgreSQL отличается от сопоставления для устаревшей версии. Сведения о последнем сопоставлении типов данных см. в разделе "Сопоставление типов данных" для PostgreSQL.

Различия между PostgreSQL и PostgreSQL (устаревшая версия)

В таблице ниже показаны различия в сопоставлении типов данных между PostgreSQL и PostgreSQL (устаревшая версия).

Тип данных PostgreSQL Промежуточный тип данных службы для PostgreSQL Тип данных промежуточной службы для PostgreSQL (устаревшая версия)
Money Десятичное Строка
Метка времени с часовыми поясами Дата/время Строка
Время с часовыми поясами DateTimeOffset Строка
Интервал TimeSpan Строка
BigDecimal Не поддерживается. В качестве альтернативы используйте to_char() функцию для преобразования BigDecimal в String. Строка

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.