Kopieren von Daten aus PostgreSQL mithilfe von Azure Data Factory oder Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

In diesem Artikel wird beschrieben, wie Sie die Copy-Aktivität in Azure Data Factory- und Azure Synapse Analytics-Pipelines verwenden, um Daten aus einer PostgreSQL-Datenbank zu kopieren. Er baut auf dem Artikel zur Übersicht über die Kopieraktivität auf, der eine allgemeine Übersicht über die Kopieraktivität enthält.

Wichtig

Der neue PostgreSQL-Connector bietet verbesserten nativen PostgreSQL-Support und bessere Leistung. Wenn Sie den älteren PostgreSQL-Connector in Ihrer Lösung verwenden, der lediglich aus Gründen der Abwärtskompatibilität unverändert unterstützt wird, finden Sie entsprechende Informationen im Artikel PostgreSQL-Connector (Legacy).

Unterstützte Funktionen

Für den PostgreSQL-Connector werden die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR
Kopieraktivität (Quelle/-) ① ②
Lookup-Aktivität ① ②

① Azure Integration Runtime ② Selbstgehostete Integration Runtime

Eine Liste der Datenspeicher, die als Quellen oder Senken für die Kopieraktivität unterstützt werden, finden Sie in der Tabelle Unterstützte Datenspeicher.

Dieser PostgreSQL-Connector unterstützt insbesondere PostgreSQL Version 7.4 oder höher.

Voraussetzungen

Wenn sich Ihr Datenspeicher in einem lokalen Netzwerk, in einem virtuellen Azure-Netzwerk oder in einer virtuellen privaten Amazon-Cloud befindet, müssen Sie eine selbstgehostete Integration Runtime konfigurieren, um eine Verbindung herzustellen.

Handelt es sich bei Ihrem Datenspeicher um einen verwalteten Clouddatendienst, können Sie die Azure Integration Runtime verwenden. Ist der Zugriff auf IP-Adressen beschränkt, die in den Firewallregeln genehmigt sind, können Sie Azure Integration Runtime-IPs zur Positivliste hinzufügen.

Sie können auch das Feature managed virtual network integration runtime (Integration Runtime für verwaltete virtuelle Netzwerke) in Azure Data Factory verwenden, um auf das lokale Netzwerk zuzugreifen, ohne eine selbstgehostete Integration Runtime zu installieren und zu konfigurieren.

Weitere Informationen zu den von Data Factory unterstützten Netzwerksicherheitsmechanismen und -optionen finden Sie unter Datenzugriffsstrategien.

Die Integration Runtime bietet ab Version 3.7 einen integrierten PostgreSQL-Treiber. Daher müssen keine Treiber manuell installiert werden.

Erste Schritte

Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:

Erstellen eines mit PostgreSQL verknüpften Dienstes in der Azure-Portal-Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um einen mit PostgreSQL verknüpften Dienst in der Azure-Portal-Benutzeroberfläche zu erstellen.

  1. Navigieren Sie zur Registerkarte Verwaltung in Ihrem Azure Data Factory oder Synapse Arbeitsbereich und wählen Sie Verknüpfte Dienste aus, und klicken Sie dann auf Neu:

  2. Suche Sie nach Postgre und wählen Sie den PostgreSQL Connector.

    Wählen Sie den PostgreSQL-Connector aus.

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Konfigurieren Sie einen verknüpften Dienst zu PostgreSQL.

Connectorkonfigurationsdetails

Die folgenden Abschnitte enthalten Details zu Eigenschaften, die zum Definieren von Data Factory-Entitäten speziell für den PostgreSQL-Connector verwendet werden:

Eigenschaften des verknüpften Diensts

Folgende Eigenschaften werden für den mit PostgreSQL verknüpften Dienst unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft muss auf PostgreSqlV2 festgelegt sein. Ja
server Gibt den Hostnamen und optional den Port an, auf dem PostgreSQL ausgeführt wird Ja
port Der TCP-Port des PostgreSQL-Servers No
database Die PostgreSQL-Datenbank, mit der eine Verbindung hergestellt werden soll Ja
username Der Benutzername, mit dem eine Verbindung hergestellt werden soll. Ist bei Verwendung von IntegratedSecurity nicht erforderlich Ja
Kennwort Das Kennwort, mit dem eine Verbindung hergestellt werden soll. Ist bei Verwendung von IntegratedSecurity nicht erforderlich Ja
sslMode Steuert, ob SSL verwendet wird, je nach Serverunterstützung
- Disable: SSL ist deaktiviert. Wenn der Server SSL erfordert, schlägt die Verbindung fehl.
- Allow: Nicht-SSL-Verbindungen werden bevorzugt, wenn der Server sie zulässt, aber SSL-Verbindungen werden zugelassen.
- Prefer: SSL-Verbindungen werden bevorzugt, wenn der Server sie zulässt, aber Verbindungen ohne SSL werden zugelassen.
- Require: Die Verbindung schlägt fehl, wenn der Server SSL nicht unterstützt.
- Verify-ca: Die Verbindung schlägt fehl, wenn der Server SSL nicht unterstützt. Überprüft außerdem das Serverzertifikat
- Verify-full: Die Verbindung schlägt fehl, wenn der Server SSL nicht unterstützt. Überprüft außerdem das Serverzertifikat mit dem Namen des Hosts
Optionen: Disable (0) / Allow (1) / Prefer (2) (Standard) / Require (3) / Verify-ca (4) / Verify-full (5)
No
authenticationType Authentifizierungstyp für die Verbindung mit der Datenbank. Unterstützt nur Basic. Ja
connectVia Die Integrationslaufzeit, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden muss. Weitere Informationen finden Sie im Abschnitt Voraussetzungen. Wenn keine Option angegeben ist, wird die standardmäßige Azure Integration Runtime verwendet. No
Zusätzliche Verbindungseigenschaften:
schema Legt den Schemasuchpfad fest No
pooling Gibt an, ob Verbindungspooling verwendet werden soll No
connectionTimeout Die Zeit (in Sekunden), die beim Verbindungsaufbau gewartet werden soll, bis der Versuch beendet und ein Fehler generiert wird No
commandTimeout Die Zeit (in Sekunden), die beim Ausführen eines Befehls gewartet werden soll, bis der Versuch beendet und ein Fehler generiert wird. Legen Sie für die Unendlichkeit Null fest. No
trustServerCertificate Gibt an, ob dem Serverzertifikat vertraut werden soll, ohne es zu überprüfen No
sslCertificate Speicherort eines Clientzertifikats, das an den Server gesendet werden soll No
sslKey Speicherort eines Clientschlüssels für ein Clientzertifikat, das an den Server gesendet werden soll No
sslPassword Kennwort für einen Schlüssel für ein Clientzertifikat No
readBufferSize Bestimmt die Größe des internen Puffers, den Npgsql beim Lesen verwendet. Die Erhöhung kann die Leistung verbessern, wenn große Werte aus der Datenbank übertragen werden. No
logParameters Wenn diese Option aktiviert ist, werden Parameterwerte protokolliert, wenn Befehle ausgeführt werden. No
timezone Ruft die Zeitzone der Sitzung ab oder legt sie fest No
encoding Ruft die .NET-Codierung, die zum Codieren/Decodieren von PostgreSQL-Zeichenfolgendaten verwendet wird, ab oder legt sie fest Nein

Hinweis

Um bei Verwendung der selbstgehosteten Integration Runtime eine vollständige SSL-Überprüfung über die ODBC-Verbindung durchzuführen, müssen Sie explizit eine Verbindung des Typs ODBC anstelle des PostgreSQL-Connectors verwenden und die folgende Konfiguration ausführen:

  1. Richten Sie den DSN auf allen SHIR-Servern ein.
  2. Legen Sie das richtige Zertifikat für PostgreSQL auf den SHIR-Servern unter „C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt“ ab. Hier sucht der ODBC-Treiber > nach dem SSL-Zertifikat, um zu überprüfen, wann eine Verbindung mit der Datenbank hergestellt wird.
  3. Verwenden Sie in Ihrer Data Factory-Verbindung eine Verbindung des Typs ODBC, wobei Ihre Verbindungszeichenfolge auf den DSN verweisen musst, den Sie auf Ihren SHIR-Servern erstellt haben.

Beispiel:

{
    "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"
        }
    }
}

Beispiel: Speichern des Kennworts in 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"
        }
    }
}

Dataset-Eigenschaften

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie im Artikel zu Datasets. Dieser Abschnitt enthält eine Liste der Eigenschaften, die vom PostgreSQL-Dataset unterstützt werden.

Beim Kopieren von Daten aus PostgreSQL werden die folgenden Eigenschaften unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft des Datasets muss auf PostgreSqlV2Table festgelegt werden. Ja
schema Name des Schemas. Nein (wenn „query“ in der Aktivitätsquelle angegeben ist)
table Der Name der Tabelle. Nein (wenn „query“ in der Aktivitätsquelle angegeben ist)

Beispiel

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

Wenn Sie das Datenset vom Typ RelationalTable verwenden, wird es weiterhin unverändert unterstützt. Es wird jedoch empfohlen, zukünftig die neue Version zu verwenden.

Eigenschaften der Kopieraktivität

Eine vollständige Liste mit den Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie im Artikel Pipelines. Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der PostgreSQL-Quelle unterstützt werden.

PostgreSQL als Quelle

Beim Kopieren von Daten aus PostgreSQL werden die folgenden Eigenschaften im Abschnitt source der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft der Quelle der Copy-Aktivität muss auf PostgreSqlV2Source festgelegt werden. Ja
Abfrage Verwendet die benutzerdefinierte SQL-Abfrage zum Lesen von Daten. Beispiel: "query": "SELECT * FROM \"MySchema\".\"MyTable\"". Nein (wenn „tableName“ im Dataset angegeben ist)

Hinweis

Bei Schema- und Tabellennamen wird zwischen Groß- und Kleinschreibung unterschieden. Schließen Sie die Namen in der Abfrage in "" (doppelte Anführungszeichen) ein.

Beispiel:

"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>"
            }
        }
    }
]

Wenn Sie eine Quelle vom Typ RelationalSource verwenden, wird sie weiterhin unverändert unterstützt. Es wird jedoch empfohlen, zukünftig die neue Version zu verwenden.

Datentypzuordnung für PostgreSQL

Beim Kopieren von Daten aus PostgreSQL werden die folgenden Zuordnungen von PostgreSQL-Datentypen zu den vom Dienst intern verwendeten Zwischendatentypen verwendet. Unter Schema- und Datentypzuordnungen erfahren Sie, wie Sie Aktivitätszuordnungen für Quellschema und Datentyp in die Senke kopieren.

PostgreSQL-Datentyp Zwischendatentyp des Diensts Zwischendienstdatentyp für PostgreSQL (Legacy)
SmallInt Int16 Int16
Integer Int32 Int32
BigInt Int64 Int64
Decimal (Genauigkeit <= 28) Decimal Decimal
Decimal (Genauigkeit > 28) Nicht unterstützt 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

Eigenschaften der Lookup-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter Lookup-Aktivität.

Upgrade des verknüpften PostgreSQL-Diensts

Hier finden Sie Schritte, die Ihnen beim Upgrade Ihres verknüpften PostgreSQL-Diensts helfen:

  1. Erstellen Sie einen neuen mit PostgreSQL verknüpften Dienst, und konfigurieren Sie ihn anhand der Informationen unter Eigenschaften des verknüpften Diensts.

  2. Die Datentypzuordnung für den neuesten mit PostgreSQL verknüpften Dienst unterscheidet sich von der für die Legacy-Version. Informationen zur neuesten Datentypzuordnung finden Sie unter Datentypzuordnung für PostgreSQL.

Unterschiede zwischen PostgreSQL und PostgreSQL (Legacy)

Die folgende Tabelle zeigt die Unterschiede bei der Datentypzuordnung zwischen PostgreSQL und PostgreSQL (Legacy).

PostgreSQL-Datentyp Zwischendienstdatentyp für PostgreSQL Zwischendienstdatentyp für PostgreSQL (Legacy)
Zahlung Decimal String
Timestamp with time zone DateTime String
Time with time zone DateTimeOffset String
Intervall TimeSpan String
BigDecimal Wird nicht unterstützt. Verwenden Sie alternativ die Funktion to_char(), um BigDecimal in eine Zeichenfolge zu konvertieren. String

Eine Liste der Datenspeicher, die als Quelles und Senken für die Kopieraktivität unterstützt werden, finden Sie in der Dokumentation für Unterstützte Datenspeicher.