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 verbesserte native PostgreSQL-Unterstützung. Wenn Sie den Legacyconnector von PostgreSQL in Ihrer Lösung verwenden, upgraden Sie Ihren PostgreSQL-Connector vor dem 31. Oktober 2024. Ausführliche Informationen zum Unterschied zwischen der Legacy- und der neuesten Version finden Sie in diesem Abschnitt .
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 12 und 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:
- Das Tool „Daten kopieren“
- Azure-Portal
- Das .NET SDK
- Das Python SDK
- Azure PowerShell
- Die REST-API
- Die Azure Resource Manager-Vorlage
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.
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:
Suche Sie nach Postgre und wählen Sie den PostgreSQL Connector.
Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.
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:
- Richten Sie den DSN auf allen SHIR-Servern ein.
- 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.
- 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) |
queryTimeout | Die Wartezeit, bevor der Versuch, einen Befehl auszuführen, beendet und ein Fehler generiert wird (der Standardwert ist 120 Minuten). Wenn für diese Eigenschaft ein Parameter festgelegt ist, sind Zeitspannen als Werte (Timespan-Werte) zulässig, z. B. „02:00:00“ (120 Minuten). Weitere Informationen finden Sie unter CommandTimeout. Wenn sowohl commandTimeout als auch queryTimeout konfiguriert sind, hat queryTimeout Vorrang. |
Nein |
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\"",
"queryTimeout": "00:10:00"
},
"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 |
NumericArray |
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.
Upgraden des PostgreSQL-Connectors
Die folgenden Schritte helfen Ihnen beim Upgrade Ihres PostgreSQL-Connectors:
Erstellen Sie einen neuen mit PostgreSQL verknüpften Dienst, und konfigurieren Sie ihn anhand der Informationen unter Eigenschaften des verknüpften Diensts.
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 |
Zugehöriger Inhalt
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.