Копирование данных из PostgreSQL с помощью Фабрики данных Azure или Synapse Analytics
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия копирования в конвейерах Фабрики данных Azure и Synapse Analytics копировать данные из базы данных PostgreSQL. Это продолжение статьи об обзоре действия копирования, в которой представлены общие сведения о действии копирования.
Внимание
Новый соединитель PostgreSQL обеспечивает улучшенную встроенную поддержку PostgreSQL. Если вы используете устаревший соединитель PostgreSQL в решении, обновите соединитель PostgreSQL до 31 октября 2024 г. Дополнительные сведения о различиях между устаревшей и последней версией см. в этом разделе .
Поддерживаемые возможности
Этот соединитель 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:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для PostgreSQL с помощью пользовательского интерфейса
Выполните приведенные ниже действия, чтобы создать связанную службу для PostgreSQL с помощью пользовательского интерфейса на портале Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск по запросу "Postgre" и выберите соединитель 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 и выполнить следующую конфигурацию:
- Настройте DSN на любых серверах SHIR.
- Поместите соответствующий сертификат для PostgreSQL в C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt на серверах SHIR. Именно в этом случае драйвер ODBC ищет > для SSL-сертификата, чтобы выполнить проверку при его подключении к базе данных.
- В подключении фабрики данных используйте подключение типа 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:
Создайте связанную службу PostgreSQL и настройте ее, ссылаясь на свойства связанной службы.
Сопоставление типов данных для последней связанной службы PostgreSQL отличается от сопоставления для устаревшей версии. Сведения о последнем сопоставлении типов данных см. в разделе "Сопоставление типов данных" для PostgreSQL.
Различия между PostgreSQL и PostgreSQL (устаревшая версия)
В таблице ниже показаны различия в сопоставлении типов данных между PostgreSQL и PostgreSQL (устаревшая версия).
Тип данных PostgreSQL | Промежуточный тип данных службы для PostgreSQL | Тип данных промежуточной службы для PostgreSQL (устаревшая версия) |
---|---|---|
Money | Десятичное | Строка |
Метка времени с часовыми поясами | Дата/время | Строка |
Время с часовыми поясами | DateTimeOffset | Строка |
Интервал | TimeSpan | Строка |
BigDecimal | Не поддерживается. В качестве альтернативы используйте to_char() функцию для преобразования BigDecimal в String. |
Строка |
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.