Copier des données de PostgreSQL à l’aide d’Azure Data Factory ou Synapse Analytics
S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics
Conseil
Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !
Cet article décrit comment utiliser l’activité de copie dans des pipelines Azure Data Factory et Synapse Analytics pour copier des données à partir d’une base de données PostgreSQL. Il s’appuie sur l’article Vue d’ensemble de l’activité de copie.
Important
Le nouveau connecteur PostgreSQL offre une prise en charge native améliorée de PostgreSQL. Si vous utilisez le connecteur PostgreSQL hérité dans votre solution, mettez à niveau votre connecteur PostgreSQL avant 31 octobre 2024. Reportez-vous à cette section pour plus d’informations sur la différence entre la version héritée et la dernière version.
Fonctionnalités prises en charge
Ce connecteur PostgreSQL est pris en charge pour les fonctionnalités suivantes :
Fonctionnalités prises en charge | IR |
---|---|
Activité de copie (source/-) | ① ② |
Activité de recherche | ① ② |
① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé
Pour obtenir la liste des banques de données prises en charge en tant que sources ou récepteurs par l’activité de copie, consultez le tableau Banques de données prises en charge.
Plus spécifiquement, ce connecteur PostgreSQL prend en charge PostgreSQL version 12 et ultérieures.
Prérequis
Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.
Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.
Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.
Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.
Le runtime d’intégration fournit un pilote PostgreSQL intégré à partir de la version 3.7. Ainsi, vous n’avez pas besoin d’installer manuellement un pilote.
Prise en main
Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :
- L’outil Copier des données
- Le portail Azure
- Le kit SDK .NET
- Le kit SDK Python
- Azure PowerShell
- L’API REST
- Le modèle Azure Resource Manager
Créer un service lié à PostgreSQL à l’aide de l’interface utilisateur
Utilisez les étapes suivantes pour créer un service lié à PostgreSQL dans l’interface utilisateur du portail Azure.
Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :
Recherchez Postgre et sélectionnez le connecteur PostgreSQL.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
Informations de configuration des connecteurs
Les sections suivantes fournissent des informations sur les propriétés utilisées pour définir les entités Data Factory spécifiques du connecteur PostgreSQL.
Propriétés du service lié
Les propriétés prises en charge pour le service lié PostgreSQL sont les suivantes :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type doit avoir la valeur : PostgreSqlV2 | Oui |
server | Spécifie le nom d’hôte (et éventuellement le port) sur lequel PostgreSQL s’exécute. | Oui |
port | Port TCP du serveur PostgreSQL. | Non |
database | Base de données PostgreSQL à laquelle se connecter. | Oui |
username | Nom d’utilisateur avec lequel se connecter. Non obligatoire si vous utilisez IntegratedSecurity. | Oui |
mot de passe | Mot de passe avec lequel se connecter. Non obligatoire si vous utilisez IntegratedSecurity. | Oui |
sslMode | Contrôle si SSL est utilisé, en fonction de la prise en charge du serveur. - Disable : SSL est désactivé. Si le serveur impose l’utilisation de SSL, la connexion échoue. - Allow : privilégie les connexions non SSL si le serveur les autorise, mais autorise les connexions SSL. - Prefer : privilégie les connexions SSL si le serveur les autorise, mais autorise les connexions sans SSL. - Require : échec de la connexion si le serveur ne prend pas en charge SSL. - Verify-ca : échec de la connexion si le serveur ne prend pas en charge SSL. Vérifie également le certificat de serveur. - Verify-full : échec de la connexion si le serveur ne prend pas en charge SSL. Vérifie également le certificat de serveur en le comparant au nom de l’hôte. Options : Disable (0) / Allow (1) / Prefer (2) (Par défaut) / Require (3) / Verify-ca (4) / Verify-full (5) |
Non |
authenticationType | Type d’authentification pour la connexion à la base de données. Prend en charge uniquement Basic. | Oui |
connectVia | Runtime d’intégration à utiliser pour la connexion à la banque de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, le runtime d’intégration Azure par défaut est utilisé. | Non |
Propriétés de connexion supplémentaires : | ||
schéma | Définit le chemin d’accès de recherche du schéma. | Non |
pooling | Indique si le regroupement de connexions doit être utilisé. | Non |
connectionTimeout | Délai alloué (en secondes) pour tenter d’établir une connexion avant de mettre fin à la tentative, et de générer une erreur. | Non |
commandTimeout | Délai alloué (en secondes) pour tenter d’exécuter une commande avant de mettre fin à la tentative, et de générer une erreur. L’affectation de la valeur zéro indique un temps infini. | Non |
trustServerCertificate | Indique si le certificat de serveur doit être approuvé ou non sans être validé. | Non |
sslCertificate | Emplacement d’un certificat client à envoyer au serveur. | Non |
sslKey | Emplacement d’une clé cliente pour l’envoi d’un certificat client au serveur. | Non |
sslPassword | Mot de passe d’une clé de certificat client. | Non |
readBufferSize | Détermine la taille de la mémoire tampon interne utilisée par Npgsql au moment de la lecture. L’augmentation de cette taille peut améliorer les performances pour le transfert de données volumineuses à partir de la base de données. | Non |
logParameters | Quand cette option est activée, les valeurs de paramètre sont journalisées au moment de l’exécution des commandes. | Non |
fuseau horaire | Obtient ou définit le fuseau horaire de la session. | Non |
encodage | Obtient ou définit le codage .NET utilisé pour coder/décoder les données de chaîne PostgreSQL. | Non |
Notes
Pour disposer d’une vérification SSL complète via la connexion ODBC lors de l’utilisation d’Integration Runtime auto-hébergé (SHIR), vous devez utiliser explicitement une connexion de type ODBC au lieu du connecteur PostgreSQL et effectuer la configuration suivante :
- Configurez le DSN sur tous les serveurs SHIR.
- Placez le certificat approprié pour PostgreSQL dans C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt sur les serveurs SHIR. C’est là que le pilote ODBC recherche > le certificat SSL à vérifier lorsqu’il se connecte à la base de données.
- Dans votre connexion de fabrique de données, utilisez une connexion de type ODBC, avec votre chaîne de connexion pointant vers le DSN que vous avez créé sur vos serveurs SHIR.
Exemple :
{
"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"
}
}
}
Exemple : stockage du mot de passe dans 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"
}
}
}
Propriétés du jeu de données
Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article sur les jeux de données. Cette section fournit la liste des propriétés prises en charge par le jeu de données PostgreSQL.
Pour copier des données à partir de PostgreSQL, les propriétés prises en charge sont les suivantes :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type du jeu de données doit avoir la valeur : PostgreSqlV2Table | Oui |
schéma | Nom du schéma. | Non (si « query » dans la source de l’activité est spécifié) |
table | Nom de la table. | Non (si « query » dans la source de l’activité est spécifié) |
Exemple
{
"name": "PostgreSQLDataset",
"properties":
{
"type": "PostgreSqlV2Table",
"linkedServiceName": {
"referenceName": "<PostgreSQL linked service name>",
"type": "LinkedServiceReference"
},
"annotations": [],
"schema": [],
"typeProperties": {
"schema": "<schema name>",
"table": "<table name>"
}
}
}
Si vous utilisiez un dataset typé RelationalTable
, il reste pris en charge tel quel, mais nous vous suggérons d’utiliser désormais le nouveau dataset.
Propriétés de l’activité de copie
Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par la source PostgreSQL.
PostgreSQL en tant que source
Pour copier des données à partir de PostgreSQL, les propriétés prises en charge dans la section source de l’activité de copie sont les suivantes :
Propriété | Description | Obligatoire |
---|---|---|
type | La propriété type de la source de l’activité Copy doit avoir la valeur : PostgreSqlV2Source | Oui |
query | Utiliser la requête SQL personnalisée pour lire les données. Par exemple : "query": "SELECT * FROM \"MySchema\".\"MyTable\"" . |
Non (si « tableName » est spécifié dans dataset) |
queryTimeout | Le temps d’attente avant de mettre fin à la tentative d’exécution d’une commande et de générer une erreur ; la valeur par défaut est de 120 minutes. Si un paramètre est défini pour cette propriété, les valeurs autorisées sont un intervalle de temps, par exemple « 02:00:00 » (120 minutes). Pour plus d’informations, consultez CommandTimeout. Si commandTimeout et queryTimeout sont tous deux configurés, queryTimeout est prioritaire. |
Non |
Remarque
Les noms de schéma et de table respectent la casse. Encadrez-les avec des guillemets doubles (""
) dans la requête.
Exemple :
"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\"",
"queryTimeout": "00:10:00"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Si vous utilisiez une source de données typée RelationalSource
, elle reste prise en charge telle quelle, mais nous vous suggérons d’utiliser désormais la nouvelle source.
Mappage de type de données pour PostgreSQL
Quand vous copiez des données à partir de PostgreSQL, les mappages suivants sont utilisés entre les types de données PostgreSQL et les types de données temporaires utilisés par le service de manière interne. Pour découvrir comment l’activité de copie mappe le schéma et le type de données la source au récepteur, voir Mappages de schémas et de types de données.
Type de données PostgreSql | Type de données de service intermédiaire | Type de données de service intermédiaire pour PostgreSQL (hérité) |
---|---|---|
SmallInt |
Int16 |
Int16 |
Integer |
Int32 |
Int32 |
BigInt |
Int64 |
Int64 |
Decimal (Précision <= 28) |
Decimal |
Decimal |
Decimal (Précision > 28) |
Non pris en charge | 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 |
NumericArray |
String |
String |
DateArray |
String |
String |
Range |
String |
String |
Bpchar |
String |
String |
Propriétés de l’activité Lookup
Pour en savoir plus sur les propriétés, consultez Activité Lookup.
Mettre à niveau le connecteur PostgreSQL
Voici des étapes qui vous aident à mettre à niveau votre connecteur PostgreSQL :
Créez un service lié PostgreSQL, et configurez-le en vous référant aux Propriétés du service lié.
Le mappage de type de données du dernier service lié PostgreSQL est différent de celui de la version héritée. Pour en savoir plus sur le dernier mappage de type de données, consultez Mappage de type de données pour PostgreSQL.
Différences entre PostgreSQL et PostgreSQL (hérité)
Le tableau ci-dessous montre les différences de mappage de type de données entre PostgreSQL et PostgreSQL (hérité).
Type de données PostgreSQL | Type de données de service intermédiaire pour PostgreSQL | Type de données de service intermédiaire pour PostgreSQL (hérité) |
---|---|---|
Money | Decimal | Chaîne |
Timestamp with time zone | Date/Heure | Chaîne |
Time with time zone | DateTimeOffset | Chaîne |
Intervalle | TimeSpan | Chaîne |
BigDecimal | Non pris en charge. Vous pouvez également utiliser la fonction to_char() pour convertir BigDecimal en type String. |
Chaîne |
Contenu connexe
Pour obtenir une liste des magasins de données pris en charge comme sources et récepteurs par l’activité de copie, consultez la section sur les magasins de données pris en charge.