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.

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 précisément, ce connecteur PostgreSQL prend en charge PostgreSQL version 7.4 et versions 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 :

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.

  1. 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 :

  2. Recherchez Postgre et sélectionnez le connecteur PostgreSQL.

    Select the PostgreSQL connector.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Configure a linked service to PostgreSQL.

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 être définie sur : PostgreSql Oui
connectionString Chaîne de connexion ODBC permettant de se connecter à Azure Database pour PostgreSQL.
Vous pouvez également définir un mot de passe dans Azure Key Vault et extraire la configuration password de la chaîne de connexion. Pour plus d’informations, reportez-vous aux exemples suivants et à l’article Stocker des informations d’identification dans Azure Key Vault.
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

Voici un exemple de chaîne de connexion typique : Server=<server>;Database=<database>;Port=<port>;UID=<username>;Password=<Password>. Selon votre cas de figure, vous pouvez définir d’autres propriétés :

Propriété Description Options Obligatoire
EncryptionMethod (EM) La méthode utilisée par le pilote pour chiffrer les données envoyées entre le pilote et le serveur de base de données. Par exemple : EncryptionMethod=<0/1/6>; 0 (aucun chiffrement) (par défaut) / 1 (SSL) / 6 (RequestSSL) Non
ValidateServerCertificate (VSC) Détermine si le pilote valide le certificat envoyé par le serveur de base de données lorsque le chiffrement SSL est activé (EncryptionMethod = 1). Par exemple : ValidateServerCertificate=<0/1>; 0 (désactivé) (par défaut) / 1 (activé) 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 :

  1. Configurez le DSN sur tous les serveurs SHIR.
  2. 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.
  3. 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": "PostgreSql",
        "typeProperties": {
            "connectionString": "Server=<server>;Database=<database>;Port=<port>;UID=<username>;Password=<Password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Exemple : stockage du mot de passe dans Azure Key Vault

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSql",
        "typeProperties": {
            "connectionString": "Server=<server>;Database=<database>;Port=<port>;UID=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Si vous utilisiez le service lié PostgreSQL avec la charge utile suivante, il reste pris en charge tel quel, mais nous vous suggérons d’utiliser le nouveau à l’avenir.

Charge utile précédente :

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSql",
        "typeProperties": {
            "server": "<server>",
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "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 être définie sur : PostgreSqlTable 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é)
tableName Nom de la table avec le schéma. Cette propriété est prise en charge pour la compatibilité descendante. Utilisez schema et table pour une nouvelle charge de travail. Non (si « query » dans la source de l’activité est spécifié)

Exemple

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

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 d’activité de copie doit être définie sur : PostgreSqlSource 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)

Notes

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": "PostgreSqlSource",
                "query": "SELECT * FROM \"MySchema\".\"MyTable\""
            },
            "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.

Propriétés de l’activité Lookup

Pour en savoir plus sur les propriétés, consultez Activité Lookup.

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.