Kopiera data från PostgreSQL med Hjälp av Azure Data Factory eller Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Den här artikeln beskriver hur du använder pipelines för kopieringsaktivitet i Azure Data Factory och Synapse Analytics för att kopiera data från en PostgreSQL-databas. Den bygger på översiktsartikeln för kopieringsaktivitet som visar en allmän översikt över kopieringsaktiviteten.

Viktigt!

Den nya PostgreSQL-anslutningsappen ger förbättrat inbyggt PostgreSQL-stöd och bättre prestanda. Om du använder den äldre PostgreSQL-anslutningsappen i din lösning, som endast stöds för bakåtkompatibilitet, kan du läsa artikeln om PostgreSQL-anslutningsprogram (äldre).

Funktioner som stöds

Den här PostgreSQL-anslutningsappen stöds för följande funktioner:

Funktioner som stöds IR
aktiviteten Kopiera (källa/-) (1) (2)
Sökningsaktivitet (1) (2)

(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning

En lista över datalager som stöds som källor/mottagare av kopieringsaktiviteten finns i tabellen Datalager som stöds.

Mer specifikt stöder den här PostgreSQL-anslutningsappen PostgreSQL version 7.4 och senare.

Förutsättningar

Om ditt datalager finns i ett lokalt nätverk, ett virtuellt Azure-nätverk eller Amazon Virtual Private Cloud måste du konfigurera en lokalt installerad integrationskörning för att ansluta till det.

Om ditt datalager är en hanterad molndatatjänst kan du använda Azure Integration Runtime. Om åtkomsten är begränsad till IP-adresser som är godkända i brandväggsreglerna kan du lägga till Azure Integration Runtime-IP-adresser i listan över tillåtna.

Du kan också använda funktionen för integrering av hanterade virtuella nätverk i Azure Data Factory för att få åtkomst till det lokala nätverket utan att installera och konfigurera en lokalt installerad integrationskörning.

Mer information om de nätverkssäkerhetsmekanismer och alternativ som stöds av Data Factory finns i Strategier för dataåtkomst.

Integration Runtime tillhandahåller en inbyggd PostgreSQL-drivrutin från och med version 3.7. Därför behöver du inte installera någon drivrutin manuellt.

Komma igång

Om du vill utföra aktiviteten Kopiera med en pipeline kan du använda något av följande verktyg eller SDK:er:

Skapa en länkad tjänst till PostgreSQL med hjälp av användargränssnittet

Använd följande steg för att skapa en länkad tjänst till PostgreSQL i azure-portalens användargränssnitt.

  1. Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:

  2. Sök efter Postgre och välj PostgreSQL-anslutningsappen.

    Välj PostgreSQL-anslutningsappen.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Konfigurera en länkad tjänst till PostgreSQL.

Anslut eller konfigurationsinformation

Följande avsnitt innehåller information om egenskaper som används för att definiera Data Factory-entiteter som är specifika för PostgreSQL-anslutningstjänsten.

Länkade tjänstegenskaper

Följande egenskaper stöds för postgreSQL-länkad tjänst:

Property Beskrivning Obligatoriskt
type Typegenskapen måste anges till: PostgreSqlV2 Ja
server Anger värdnamnet – och eventuellt port – som PostgreSQL körs på. Ja
port TCP-porten för PostgreSQL-servern. Nej
database PostgreSQL-databasen att ansluta till. Ja
användarnamn Användarnamnet som ska anslutas till. Krävs inte om du använder IntegratedSecurity. Ja
password Lösenordet som ska anslutas till. Krävs inte om du använder IntegratedSecurity. Ja
sslMode Styr om SSL används, beroende på serversupport.
- Inaktivera: SSL är inaktiverat. Om servern kräver SSL misslyckas anslutningen.
- Tillåt: Föredrar icke-SSL-anslutningar om servern tillåter dem, men tillåter SSL-anslutningar.
- Föredrar: Föredrar SSL-anslutningar om servern tillåter dem, men tillåter anslutningar utan SSL.
- Kräv: Anslutningen misslyckas om servern inte stöder SSL.
- Verify-ca: Anslutningen misslyckas om servern inte stöder SSL. Verifierar även servercertifikatet.
- Verifiera: Anslutningen misslyckas om servern inte stöder SSL. Verifierar även servercertifikatet med värdens namn.
Alternativ: Inaktivera (0) / Tillåt (1) / Föredrar (2) (standard) / Kräv (3) / Verify-ca (4) / Verifiera fullständig (5)
Nej
authenticationType Autentiseringstyp för att ansluta till databasen. Stöder endast Basic. Ja
connectVia Integration Runtime som ska användas för att ansluta till datalagret. Läs mer i avsnittet Förutsättningar . Om den inte anges använder den standardkörningen för Azure-integrering. Nej
Ytterligare anslutningsegenskaper:
schema Anger sökvägen till schemasökningen. Nej
poolning Om anslutningspooler ska användas. Nej
connectionTimeout Tiden att vänta (i sekunder) när du försöker upprätta en anslutning innan du avslutar försöket och genererar ett fel. Nej
commandTimeout Tiden att vänta (i sekunder) när du försöker köra ett kommando innan du avslutar försöket och genererar ett fel. Ställ in på noll för oändligheten. Nej
trustServerCertificate Om du vill lita på servercertifikatet utan att verifiera det. Nej
sslCertificate Plats för ett klientcertifikat som ska skickas till servern. Nej
sslKey Plats för en klientnyckel för ett klientcertifikat som ska skickas till servern. Nej
sslPassword Lösenord för en nyckel för ett klientcertifikat. Nej
readBufferSize Avgör storleken på den interna buffert som Npgsql använder vid läsning. Att öka kan förbättra prestanda om du överför stora värden från databasen. Nej
logParameters När det är aktiverat loggas parametervärden när kommandon körs. Nej
timezone Hämtar eller ställer in sessionens tidszon. Nej
Kodning Hämtar eller anger den .NET-kodning som ska användas för att koda/avkoda PostgreSQL-strängdata. Nej

Kommentar

För att kunna ha fullständig SSL-verifiering via ODBC-anslutningen när du använder den lokalt installerade integrationskörningen måste du använda en ODBC-typanslutning i stället för PostgreSQL-anslutningsappen explicit och slutföra följande konfiguration:

  1. Konfigurera DSN på alla SHIR-servrar.
  2. Placera rätt certifikat för PostgreSQL i C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt på SHIR-servrarna. Det är här ODBC-drivrutinen letar efter > SSL-certifikatet för att verifiera när den ansluter till databasen.
  3. I datafabriksanslutningen använder du en ODBC-typanslutning, där din anslutningssträng pekar på det DSN som du skapade på SHIR-servrarna.

Exempel:

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

Exempel: Lagra lösenord i 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"
        }
    }
}

Egenskaper för datauppsättning

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i artikeln datauppsättningar . Det här avsnittet innehåller en lista över egenskaper som stöds av PostgreSQL-datauppsättningen.

Följande egenskaper stöds för att kopiera data från PostgreSQL:

Property Beskrivning Obligatoriskt
type Datamängdens typegenskap måste anges till: PostgreSqlV2Table Ja
schema Namnet på schemat. Nej (om "fråga" i aktivitetskällan har angetts)
table Tabellens namn. Nej (om "fråga" i aktivitetskällan har angetts)

Exempel

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

Om du använder RelationalTable en typ av datauppsättning stöds den fortfarande som den är, medan du rekommenderas att använda den nya framöver.

Kopiera egenskaper för aktivitet

En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i artikeln Pipelines . Det här avsnittet innehåller en lista över egenskaper som stöds av PostgreSQL-källan.

PostgreSQL som källa

Om du vill kopiera data från PostgreSQL stöds följande egenskaper i avsnittet kopieringsaktivitetskälla:

Property Beskrivning Obligatoriskt
type Typegenskapen för kopieringsaktivitetskällan måste anges till: PostgreSqlV2Source Ja
query Använd den anpassade SQL-frågan för att läsa data. Exempel: "query": "SELECT * FROM \"MySchema\".\"MyTable\"". Nej (om "tableName" i datauppsättningen har angetts)

Kommentar

Schema- och tabellnamn är skiftlägeskänsliga. Omsluta dem i "" (dubbla citattecken) i frågan.

Exempel:

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

Om du använde RelationalSource en typbaserad källa stöds den fortfarande som den är, medan du rekommenderas att använda den nya framöver.

Datatypsmappning för PostgreSQL

När du kopierar data från PostgreSQL används följande mappningar från PostgreSQL-datatyper till mellanliggande datatyper som används av tjänsten internt. Se Schema- och datatypmappningar för att lära dig mer om hur kopieringsaktivitet mappar källschemat och datatypen till mottagaren.

PostgreSql-datatyp Datatyp för interimstjänst Tillfällig tjänstdatatyp för PostgreSQL (äldre)
SmallInt Int16 Int16
Integer Int32 Int32
BigInt Int64 Int64
Decimal (Precision <= 28) Decimal Decimal
Decimal (Precision > 28) Stöds inte 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

Egenskaper för uppslagsaktivitet

Mer information om egenskaperna finns i Sökningsaktivitet.

Uppgradera den länkade PostgreSQL-tjänsten

Här följer steg som hjälper dig att uppgradera din länkade PostgreSQL-tjänst:

  1. Skapa en ny Länkad PostgreSQL-tjänst och konfigurera den genom att referera till länkade tjänstegenskaper.

  2. Datatypsmappningen för den senaste PostgreSQL-länkade tjänsten skiljer sig från den för den äldre versionen. Information om den senaste datatypsmappningen finns i Datatypsmappning för PostgreSQL.

Skillnader mellan PostgreSQL och PostgreSQL (äldre)

Tabellen nedan visar skillnaderna i datatypsmappning mellan PostgreSQL och PostgreSQL (äldre).

PostgreSQL-datatyp Tillfällig tjänstdatatyp för PostgreSQL Tillfällig tjänstdatatyp för PostgreSQL (äldre)
Money Decimal String
Tidsstämpel med tidszon Datum/tid String
Tid med tidszon DateTimeOffset String
Intervall TimeSpan String
BigDecimal Stöds ej. Du kan också använda to_char() funktionen för att konvertera BigDecimal till String. String

En lista över datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i datalager som stöds.