Condividi tramite


Copiare e trasformare i dati in Database di Azure per PostgreSQL usando Azure Data Factory o Synapse Analytics

APPLICABILE A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Data Factory in Microsoft Fabric è la nuova generazione di Azure Data Factory, con un'architettura più semplice, un'intelligenza artificiale predefinita e nuove funzionalità. Se non si ha familiarità con l'integrazione dei dati, iniziare con Fabric Data Factory. I carichi di lavoro di Azure Data Factory esistenti possono eseguire l'aggiornamento a Fabric per accedere a nuove funzionalità tra data science, analisi in tempo reale e creazione di report.

Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory e Synapse Analytics per copiare dati da e in Database di Azure per PostgreSQL. E come usare Flusso di dati per trasformare i dati in Database di Azure per PostgreSQL. Per altre informazioni, leggere gli articoli introduttivi per Azure Data Factory e Synapse Analytics.

Importante

L'Database di Azure per PostgreSQL versione 2.0 offre un supporto Database di Azure per PostgreSQL nativo migliorato. Se stai utilizzando la versione 1.0 di Database di Azure per PostgreSQL nella tua soluzione, è consigliabile aggiornare il connettore Database di Azure per PostgreSQL al più presto.

Questo connettore è specializzato per il servizio Database di Azure per PostgreSQL. Per copiare i dati da un database PostgreSQL generico che si trova in locale o nel cloud, usare il connettore PostgreSQL.

Funzionalità supportate

Questo connettore Database di Azure per PostgreSQL è supportato per le funzionalità seguenti:

Funzionalità supportate IR Endpoint privato gestito Versioni supportate del connettore
Attività di copia (sorgente/destinazione) (1) (2) 1.0 & 2.0
Flusso di dati di mapping (origine/sink) 1.0 & 2.0
Attività di ricerca (1) (2) 1.0 & 2.0
Attività dello script (1) (2) 2.0

(1) Runtime di integrazione Azure (2) Runtime di integrazione self-hosted

Le tre attività funzionano su Database di Azure per PostgreSQL Single Server, Flexible Server e Azure Cosmos DB per PostgreSQL.

Importante

Database di Azure per PostgreSQL Il Server Singolo verrà ritirato il 28 marzo 2025. Eseguire la migrazione al server flessibile entro tale data. È possibile fare riferimento a questo articolo e domande frequenti per le indicazioni sulla migrazione.

Iniziare

Per eseguire l'attività Copy con una pipeline, è possibile usare uno degli strumenti o degli SDK seguenti:

Creare un servizio collegato per Database di Azure per PostgreSQL usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato per Azure database per PostgreSQL nell'interfaccia utente del portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro Azure Data Factory o Synapse e selezionare Servizi collegati, quindi selezionare Nuovo:

  2. Cercare PostgreSQL e selezionare il connettore Azure database per PostgreSQL.

    Selezionare il database di Azure per postgreSQL connector.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Configurare un servizio collegato per Azure database per PostgreSQL.

Dettagli di configurazione del connettore

Le sezioni seguenti offrono informazioni dettagliate sulle proprietà usate per definire entità di Data Factory specifiche per Database di Azure per PostgreSQL connettore.

Proprietà del servizio collegato

La versione del connettore Database di Azure per PostgreSQL 2.0 supporta le modalità Transport Layer Security (TLS) 1.3 e SSL (Secure Socket Layer). Fare riferimento a questa section per aggiornare la versione del connettore database SQL di Azure dalla versione 1.0. Per informazioni dettagliate sulla proprietà, vedere le sezioni corrispondenti.

Versione 2.0

Quando si applica la versione 2.0, sono supportate le proprietà seguenti per il servizio collegato Database di Azure per PostgreSQL:

Proprietà Descrizione Obbligatoria
tipo La proprietà type deve essere impostata su: AzurePostgreSql.
versione Versione specificata. Il valore è 2.0.
tipo di autenticazione Selezionare tra i tipi di autenticazione per identità gestita di base, entità servizio, identità gestita assegnata dal sistema o identità gestita assegnata dall'utente
server Specifica il nome host e, facoltativamente, la porta in cui è in esecuzione Database di Azure per PostgreSQL.
porto Porta TCP del server Database di Azure per PostgreSQL. Il valore predefinito è 5432. NO
banca dati Nome del database Database di Azure per PostgreSQL a cui connettersi.
sslMode Controlla se viene usato SSL, a seconda del supporto del server.
- Disabilitato: SSL è disabilitato. Se il server richiede SSL, la connessione non riesce.
- Consenti: preferisce le connessioni non SSL se il server le consente, ma consente le connessioni SSL.
- Preferito: preferisce le connessioni SSL se il server le consente, ma consente le connessioni senza SSL.
- Obbligatorio: la connessione non riesce se il server non supporta SSL.
- Verify_ca: la connessione non riesce se il server non supporta SSL. Verifica anche il certificato del server.
- Verify_full: la connessione non riesce se il server non supporta SSL. Verifica anche il certificato del server con il nome dell'host.
Opzioni: Disabilitato (0) / Consenti (1) / Preferito (2) (impostazione predefinita) / Obbligatorio (3) / Verify_ca (4) / Verify_full (5)
NO
connectVia Questa proprietà rappresenta il runtime di integrazione da usare per connettersi all'archivio dati. È possibile usare Azure Integration Runtime o Integration Runtime self-hosted (se l'archivio dati si trova nella rete privata). Se non specificato, usa il Azure Integration Runtime predefinito. NO
Proprietà di connessione aggiuntive:
schema Imposta il percorso di ricerca dello schema. NO
raggruppamento Indica se usare il pool di connessioni. NO
connectionTimeout Tempo di attesa (in secondi) durante il tentativo di stabilire una connessione prima di terminare il tentativo e generare un errore. NO
commandTimeout Tempo di attesa (in secondi) durante il tentativo di esecuzione di un comando prima di terminare il tentativo e generare un errore. Impostare su zero per infinito. NO
trustServerCertificate Se considerare attendibile il certificato del server senza convalidarlo. NO
dimensione del buffer di lettura (readBufferSize) Determina le dimensioni del buffer interno usato da Npgsql durante la lettura. L'aumento può migliorare le prestazioni se si trasferiscono valori di grandi dimensioni dal database. NO
fuso orario Ottiene o imposta il fuso orario della sessione. NO
codifica Ottiene o imposta la codifica .NET per la codifica/decodifica dei dati stringa PostgreSQL. NO

Autenticazione di base

Proprietà Descrizione Obbligatoria
nome utente Nome utente con cui connettersi. Non obbligatorio se si usa IntegratedSecurity.
parola d’ordine Password con cui connettersi. Non obbligatorio se si usa IntegratedSecurity. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro. In alternativa, è possibile referenziare un segreto archiviato in Azure Key Vault.

Esempio:

{
    "name": "AzurePostgreSqlLinkedService",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": "5432",
            "database": "<database name>",
            "sslMode": 2,
            "username": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        }
    }
}

Esempio:

Store password in Azure Key Vault

{
    "name": "AzurePostgreSqlLinkedService",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": "5432",
            "database": "<database name>",
            "sslMode": 2,
            "username": "<user name>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        }
    }
}

Autenticazione dell'identità gestita assegnata dal sistema

Una data factory o un'area di lavoro di Synapse può essere associata a una identità gestita assegnata dal sistema che rappresenta il servizio durante l'autenticazione ad altre risorse in Azure. È possibile usare questa identità gestita per Azure database per l'autenticazione PostgreSQL. L'area di lavoro designata factory o Synapse può accedere e copiare dati da o nel database usando questa identità.

Per usare l'identità gestita assegnata dal sistema, seguire questa procedura:

  1. Una data factory o un'area di lavoro di Synapse può essere associata a un'identità gestita assegnata dal sistema. Altre informazioni, Generare un'identità gestita assegnata dal sistema

  2. I dati Azure per PostgreSQL con identità gestita assegnata dal sistema On.

    Screenshot della configurazione dell'identità gestita assegnata dal sistema nel database di Azure per il server PostgreSQL.

  3. Nella risorsa Database di Azure per PostgreSQL nella sezione Security

    1. Seleziona Autenticazione

    2. Selezionare solo autenticazione Microsoft Entra o autenticazione PostgreSQL e Microsoft Entra come metodo di autenticazione.

    3. Selezionare + Aggiungi amministratori Microsoft Entra

    4. Aggiungere l'identità gestita dal sistema per la risorsa Azure Data Factory tra gli Microsoft Entra Administrators

      Screenshot dell'aggiunta dell'identità gestita assegnata dal sistema nella configurazione di Database di Azure per PostgreSQL.

  4. Configurare un database Azure per il servizio collegato PostgreSQL.

Esempio:

{
    "name": "AzurePostgreSqlLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "authenticationType": "SystemAssignedManagedIdentity"
        }
    }
}

Annotazioni

Questo tipo di autenticazione non è supportato nel runtime di integrazione self-hosted.

Autenticazione dell'identità gestita assegnata dall'utente

Una data factory o un'area di lavoro di Synapse può essere associata a un'identità gestita assegnata dall'< utente> che rappresenta il servizio durante l'autenticazione ad altre risorse in Azure. È possibile usare questa identità gestita per Azure database per l'autenticazione PostgreSQL. L'area di lavoro designata factory o Synapse può accedere e copiare dati da o nel database usando questa identità.

Per usare l'autenticazione dell'identità gestita assegnata dall'utente, oltre alle proprietà generiche descritte nella sezione precedente, specificare le proprietà seguenti:

Proprietà Descrizione Obbligatoria
credenziali Specificare l'identità gestita assegnata dall'utente come oggetto credenziale.

È anche necessario seguire i passaggi seguenti:

  1. Assicurarsi di creare una risorsa Identity gestita assegnata dall'utente nel portale di Azure. Per altre informazioni, vedere Gestire le identità gestite assegnate dall'utente

  2. Assegna l'Identità Gestita Assegnata dall'Utente User-assigned Managed Identity alla risorsa del database di Azure per PostgreSQL

    1. Nella risorsa del database Azure per il server PostgreSQL, sotto Security

    2. Seleziona Autenticazione

    3. Verificare se il metodo di autenticazione è autenticazione solo Microsoft Entra o autenticazione Microsoft Entra e PostgreSQL

    4. Selezionare il collegamento + Aggiungi amministratori Microsoft Entra e quindi seleziona l'identità gestita che hai assegnato.

      Screenshot della configurazione dell'identità gestita assegnata dall'utente nel database Azure per il server PostgreSQL.

  3. Assegna l'identità gestita assegnata dall'utente alla risorsa Azure Data Factory

    1. Selezionare Impostazioni e quindi Identità gestite

    2. Nella scheda Assegnata dall'utente . Selezionare il collegamento + Aggiungi e selezionare l'identità gestita dall'utente

      Screenshot della configurazione dell'identità gestita e assegnata dall'utente nella risorsa di Azure Data Factory.

  4. Configurare un database Azure per il servizio collegato PostgreSQL.

Esempio:

{
    "name": "AzurePostgreSqlLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "authenticationType": "UserAssignedManagedIdentity",
            "credential": {
                "referenceName": "<your credential>",
                "type": "CredentialReference"
            }
        }
    }
}

Autenticazione di un'entità servizio

Proprietà Descrizione Obbligatoria
nome utente Nome visualizzato dell'entità servizio.
inquilino Il tenant in cui si trova il server Azure Database per PostgreSQL
ID Principale del Servizio (servicePrincipalId) ID applicazione dell'entità servizio
tipo di credenziale del servizio principale Selezionare se il certificato dell'entità servizio o la chiave dell'entità servizio è il metodo di autenticazione desiderato
- ServicePrincipalCert: impostato come certificato dell'entità servizio per il certificato dell'entità servizio.
- ServicePrincipalKey: Impostala come chiave dell'entità servizio per l'autenticazione della chiave dell'entità di servizio.
chiavePrincipaleDelServizio Valore del segreto client. Usato quando è selezionata la chiave dell'entità servizio
azureCloudType Selezionare il tipo di cloud Azure del server Database di Azure per PostgreSQL
servicePrincipalEmbeddedCert File del certificato dell'entità servizio
servicePrincipalEmbeddedCertPassword Password del certificato dell'entità servizio, se necessario NO

Esempio:

chiave dell'entità servizio

{
    "name": "AzurePostgreSqlLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "username": "<service principal name>",
            "authenticationType": "<authentication type>",
            "tenant": "<tenant>",
            "servicePrincipalId": "<service principal ID>",
            "azureCloudType": "<azure cloud type>",
            "servicePrincipalCredentialType": "<service principal type>",
            "servicePrincipalKey": "<service principal key>"
        }
    }
}

Esempio:

Certificato dell'entità servizio

{
    "name": "AzurePostgreSqlLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "annotations": [],
        "type": "AzurePostgreSql",
        "version": "2.0",
        "typeProperties": {
            "server": "<server name>",
            "port": 5432,
            "database": "<database name>",
            "sslMode": 2,
            "username": "<service principal name>",
            "authenticationType": "<authentication type>",
            "tenant": "<tenant>",
            "servicePrincipalId": "<service principal ID>",
            "azureCloudType": "<azure cloud type>",
            "servicePrincipalCredentialType": "<service principal type>",
            "servicePrincipalEmbeddedCert": "<service principal certificate>",
            "servicePrincipalEmbeddedCertPassword": "<service principal embedded certificate password>"
        }
    }
}

Annotazioni

L'ID di autenticazione di Microsoft Entra tramite il principale del servizio e l'identità gestita assegnata dall'utente è supportato nel runtime di integrazione self-hosted versione 5.50 o successiva.

Versione 1.0

Quando si applica la versione 1.0, sono supportate le proprietà seguenti per il servizio collegato Database di Azure per PostgreSQL:

Proprietà Descrizione Obbligatoria
tipo La proprietà type deve essere impostata su: AzurePostgreSql.
versione Versione specificata. Il valore è 1.0.
stringa di connessione Una stringa di connessione Npgsql per connettersi al database Azure per PostgreSQL.
È anche possibile inserire una password in Azure Key Vault ed estrarre la configurazione password dalla stringa di connessione. Per ulteriori dettagli, vedere i seguenti esempi e archiviare le credenziali in Azure Key Vault.
connectVia Questa proprietà rappresenta il runtime di integrazione da usare per connettersi all'archivio dati. È possibile usare Azure Integration Runtime o Integration Runtime self-hosted (se l'archivio dati si trova nella rete privata). Se non specificato, usa il Azure Integration Runtime predefinito. NO

Un stringa di connessione tipico è host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>. Altre proprietà che è possibile impostare in base al caso sono riportate qui di seguito:

Proprietà Descrizione Opzioni Obbligatoria
EncryptionMethod (EM) Il metodo usato dal driver per crittografare i dati inviati tra il driver e il server di database. Ad esempio, EncryptionMethod=<0/1/6>; 0 (Nessuna crittografia) (impostazione predefinita) / 1 (SSL) / 6 (RequestSSL) NO
ValidateServerCertificate (VSC) Determina se il driver convalida il certificato inviato dal server di database quando la crittografia SSL è abilitata (Metodo di crittografia = 1). Ad esempio, ValidateServerCertificate=<0/1>; 0 (disabilitato) (impostazione predefinita) / 1 (abilitato) NO

Esempio:

{
    "name": "AzurePostgreSqlLinkedService",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "1.0",
        "typeProperties": {
            "connectionString": "host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>"
        }
    }
}

Esempio:

Store password in Azure Key Vault

{
    "name": "AzurePostgreSqlLinkedService",
    "properties": {
        "type": "AzurePostgreSql",
        "version": "1.0",
        "typeProperties": {
            "connectionString": "host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        }
    }
}

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere Set di dati. In questa sezione viene fornito un elenco di proprietà supportate Database di Azure per PostgreSQL nei set di dati.

Per copiare dati da Database di Azure per PostgreSQL, impostare la proprietà type del set di dati su AzurePostgreSqlTable. Sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
tipo La proprietà type del set di dati deve essere impostata su AzurePostgreSqlTable.
schema Nome dello schema. No (se nell'origine dell'attività è specificato "query")
tabella Nome della tabella/vista. No (se nell'origine dell'attività è specificato "query")
tableName Nome della tabella. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No (se nell'origine dell'attività è specificato "query")

Esempio:

{
    "name": "AzurePostgreSqlDataset",
    "properties": {
        "type": "AzurePostgreSqlTable",
        "linkedServiceName": {
            "referenceName": "<AzurePostgreSql linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere Pipeline e attività. In questa sezione viene fornito un elenco delle proprietà supportate da un'origine del database di Azure per PostgreSQL.

Azure Database per PostgreSQL come origine

Per copiare dati da Database di Azure per PostgreSQL, impostare il tipo di origine nell'attività di copia su AzurePostgreSqlSource. Nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria
tipo La proprietà type dell'origine dell'attività Copy deve essere impostata su AzurePostgreSqlSource
quesito Usare la query SQL personalizzata per leggere i dati. Ad esempio, SELECT * FROM mytable o SELECT * FROM "MyTable". Si noti che il nome dell'entità in PostgreSQL viene considerato senza distinzione maiuscole/minuscole se non è racchiuso tra virgolette. No (se è specificata la proprietà tableName in un set di dati)
queryTimeout Il tempo di attesa prima di terminare il tentativo di eseguire un comando e generare un errore, il valore predefinito è 120 minuti. Se il parametro è impostato per questa proprietà, i valori consentiti sono timepan, ad esempio "02:00:00" (120 minuti). Per altre informazioni, vedere CommandTimeout. NO
opzioniDiPartizione Specifica le opzioni di partizionamento dei dati utilizzate per caricare dati da database SQL di Azure.
Valori consentiti: None (predefinito), PhysicalPartitionsOfTable e DynamicRange.
Quando un'opzione di partizione è abilitata (ovvero non None), il grado di parallelismo per caricare simultaneamente i dati da un database SQL di Azure è controllato dall'impostazione parallelCopies nell'attività di copia.
NO
impostazioni di partizione Specifica il gruppo di impostazioni per il partizionamento dei dati.
Applicare quando l'opzione di partizione non è None.
NO
Si trova in partitionSettings:
nomi delle partizioni Elenco di partizioni fisiche da copiare.
Si applica quando l'opzione di partizione è PhysicalPartitionsOfTable. Se si usa una query per recuperare i dati di origine, associare ?AdfTabularPartitionName nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Database di Azure per PostgreSQL.
NO
partitionColumnName Specificare il nome della colonna di origine nel tipo integer o data/datetime (int, smallint, bigint, date, timestamp without time zone, timestamp with time zone, o time without time zone) che verrà usato nel partizionamento per intervalli per la copia parallela. Se non specificato, la chiave primaria della tabella viene rilevata automaticamente e usata come colonna di partizione.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionColumnName nella clausola WHERE. Per un esempio, vedere la sezione Parallel copy from Database di Azure per PostgreSQL.
NO
limite superiore di partizione Valore massimo della colonna della partizione per la copia dei dati.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionUpbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Azure Database per PostgreSQL.
NO
partitionLowerBound Il valore minimo della colonna di partizione per esportare dati.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionLowbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Database di Azure per PostgreSQL.
NO

Esempio:

"activities":[
    {
        "name": "CopyFromAzurePostgreSql",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<AzurePostgreSql input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzurePostgreSqlSource",
                "query": "<custom query e.g. SELECT * FROM mytable>",
                "queryTimeout": "00:10:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Database di Azure per PostgreSQL come destinazione

Per copiare dati in Database di Azure per PostgreSQL, impostare il tipo di sink nell'attività di copia su SqlSink. Nella sezione sink dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Obbligatoria Versione di compatibilità del connettore
tipo La proprietà type del sink dell'attività Copy deve essere impostata su AzurePostgreSQLSink. Versione 1.0 e versione 2.0
preCopyScript Specificare una query SQL per l'attività di copia da eseguire prima di scrivere dati in Database di Azure per PostgreSQL in ogni esecuzione. È possibile usare questa proprietà per pulire i dati precaricati. NO Versione 1.0 e versione 2.0
writeMethod Metodo utilizzato per scrivere dati in Database di Azure per PostgreSQL.
I valori consentiti sono : CopyCommand (impostazione predefinita, più efficiente), BulkInsert e Upsert (solo versione 2.0).
NO Versione 1.0 e versione 2.0
upsertSettings Specificare il gruppo di impostazioni per il comportamento di scrittura.
Applicare quando l'opzione WriteBehavior è Upsert.
NO Versione 2.0
Si trova in upsertSettings:
chiavi Specificare i nomi colonna per l'identificazione univoca delle righe. È possibile usare una singola chiave o una serie di chiavi. Le chiavi devono essere una chiave primaria o una colonna univoca. Se non specificato, viene usata la chiave primaria. NO Versione 2.0
writeBatchSize Numero di righe caricate in Database di Azure per PostgreSQL per batch.
Il valore consentito è un numero intero che rappresenta il numero di righe.
No, il valore predefinito è 1.000.000 Versione 1.0 e versione 2.0
writeBatchTimeout Tempo di attesa per l'operazione di inserimento batch da completare prima del timeout.
I valori consentiti sono le stringhe Timespan. Ad esempio "00:30:00" (30 minuti).
No, il valore predefinito è 00:30:00 Versione 1.0 e versione 2.0

Esempio 1: Comando Copia

"activities":[
    {
        "name": "CopyToAzureDatabaseForPostgreSQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure PostgreSQL output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzurePostgreSqlSink",
                "preCopyScript": "<custom SQL script>",
                "writeMethod": "CopyCommand",
                "writeBatchSize": 1000000
            }
        }
    }
]

Esempio 2: Eseguire l'upsert dei dati

"activities":[
    {
        "name": "CopyToAzureDatabaseForPostgreSQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure PostgreSQL output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzurePostgreSQLSink",
                "writeMethod": "Upsert",
                "upsertSettings": {
                    "keys": [
                        "<column name>"
                    ]
                },
            }
        }
    }
]

Aggiornare o inserire i dati

attività Copy supporta in modo nativo le operazioni upsert. Per eseguire un upsert, l'utente deve specificare le colonne chiave che sono chiavi primarie o colonne univoche. Se l'utente non fornisce le colonne chiave, vengono usate le colonne chiave primaria nella tabella sink. L'attività di copia aggiornerà le colonne non chiave nella tabella sink in cui i valori della colonna chiave corrispondono a quelli nella tabella di origine; in caso contrario, inserirà nuovi dati.

Copia parallela da Database di Azure per PostgreSQL

Il connettore Database di Azure per PostgreSQL nell'attività di copia fornisce il partizionamento dei dati predefinito per copiare i dati in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella tabella Origine dell'attività di copia.

Screenshot delle opzioni di partizione

Quando si abilita la copia partizionata, l'attività di copia esegue query parallele sull'origine Database di Azure per PostgreSQL per caricare i dati in base alle partizioni. Il grado di parallelismo è controllato dall'impostazione parallelCopies sull'attività di copia. Ad esempio, se si imposta parallelCopies su quattro, il servizio genera e esegue simultaneamente quattro query in base all'opzione e alle impostazioni di partizione specificate e ogni query recupera una parte di dati dal Database di Azure per PostgreSQL.

È consigliabile abilitare la copia parallela con il partizionamento dei dati, soprattutto quando si caricano grandi quantità di dati dal Database di Azure per PostgreSQL. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, è consigliabile scrivere in una cartella come più file (specificare solo il nome della cartella), nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.

Sceneggiatura Impostazioni consigliate
Caricamento completo da una tabella di grandi dimensioni, con partizioni fisiche. Opzione di partizione: partizioni fisiche della tabella.

Durante l'esecuzione, il servizio rileva automaticamente le partizioni fisiche e copia i dati in base alle partizioni.
Caricamento completo da una tabella di grandi dimensioni, senza partizioni fisiche, con una colonna di numeri interi per il partizionamento dei dati. Opzioni di partizione: partizione a intervalli dinamici.
Colonna di partizione: specificare la colonna usata per il partizionamento dei dati. Se non è specificato, viene usata la colonna della chiave primaria.
Caricare una grande quantità di dati usando una query personalizzata, con partizioni fisiche. Opzione di partizione: partizioni fisiche della tabella.
query: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause>.
Nome partizione: specificare uno o più nomi di partizione da cui copiare i dati. Se non specificato, il servizio rileva automaticamente le partizioni fisiche nella tabella specificata nel set di dati PostgreSQL.

Durante l'esecuzione, il servizio sostituisce ?AdfTabularPartitionName con il nome effettivo della partizione e invia a Database di Azure per PostgreSQL.
Caricare una grande quantità di dati usando una query personalizzata, senza partizioni fisiche, con una colonna di numeri interi per il partizionamento dei dati. Opzioni di partizione: partizione a intervalli dinamici.
query: SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Colonna di partizione: specificare la colonna usata per il partizionamento dei dati. È possibile eseguire la partizione rispetto alla colonna con un tipo di dati integer o date/datetime.
Limite superiore della partizione e limite inferiore della partizione: specificare se si desidera filtrare in base alla colonna di partizione per recuperare i dati solo tra l'intervallo inferiore e quello superiore.

Durante l'esecuzione, il servizio sostituisce ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound con il nome di colonna e gli intervalli di valori effettivi per ogni partizione e invia a Database di Azure per PostgreSQL.
Ad esempio, se la colonna di partizione "ID" viene impostata con il limite inferiore come 1 e il limite superiore come 80, con copia parallela impostata su 4, il servizio recupera i dati per quattro partizioni. Gli ID sono rispettivamente compresi tra [1, 20], [21, 40], [41, 60] e [61, 80].

Procedure consigliate per il caricamento di dati con opzione partizione:

  1. Scegliere una colonna distintiva come colonna partizione (ad esempio, chiave primaria o chiave univoca) per evitare l'asimmetria dei dati.
  2. Se la tabella include una partizione predefinita, usare l'opzione di partizione "Partizioni fisiche della tabella" per ottenere prestazioni migliori.
  3. Se si usa Azure Integration Runtime per copiare dati, è possibile impostare "Data Integration Units (DIU)" (>4) per usare più risorse di calcolo. Controllare gli scenari applicabili.
  4. "Grado di parallelismo di copia" controlla i numeri di partizione, impostando questo numero troppo grande qualche tempo fa male alle prestazioni. È consigliabile impostare questo numero come (DIU o numero di nodi del runtime di integrazione self-hosted) * (da 2 a 4).

Esempio: caricamento completo da una tabella di grandi dimensioni con partizioni fisiche

"source": {
    "type": "AzurePostgreSqlSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Esempio: query con partizionamento per intervalli dinamici

"source": {
    "type": "AzurePostgreSqlSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Proprietà di mappatura del flusso di dati

Quando si trasformano i dati nel flusso di dati di mappatura, è possibile leggere e scrivere su tabelle di Azure Database per PostgreSQL. Per altre informazioni, vedere la trasformazione origine e la trasformazione sink nei flussi di dati per mapping. È possibile scegliere di usare un insieme di dati Database di Azure per PostgreSQL o un insieme di dati inline come tipo di origine e destinazione.

Annotazioni

Attualmente è supportata solo l'autenticazione di base per le versioni V1 e V2 del connettore Database di Azure per PostgreSQL nei flussi di dati di mapping.

Trasformazione della sorgente

Nella tabella seguente sono elencate le proprietà supportate da Database di Azure per PostgreSQL di origine. È possibile modificare queste proprietà nella scheda Opzioni origine.

Nome Descrizione Obbligatoria Valori consentiti Proprietà script del flusso di dati
Tabella Se si seleziona Tabella come input, il flusso di dati recupera tutti i dati dalla tabella specificata nel set di dati. NO - (solo per set di dati inline)
tableName
Quesito Se si seleziona Query come input, specificare una query SQL per recuperare i dati dall'origine, il che esegue l'override di ogni tabella specificata nel set di dati. L'uso delle query è un ottimo metodo per ridurre il numero di righe per test o ricerche.

La clausola Order By non è supportata, ma è possibile impostare un'istruzione SELECT FROM completa. È possibile usare anche funzioni di tabella definite dall'utente. select * from udfGetData() è una funzione utente in SQL che restituisce una tabella possibile da usare nel flusso di dati.
Esempio di query: select * from mytable where customerId > 1000 and customerId < 2000 o select * from "MyTable". Si noti che il nome dell'entità in PostgreSQL viene considerato senza distinzione maiuscole/minuscole se non è racchiuso tra virgolette.
NO string quesito
Nome schema Se si seleziona una procedura memorizzata come input, specificare un nome dello schema della procedura memorizzata, oppure selezionare Scopri per chiedere al servizio di individuare i nomi dello schema. NO string schemaName
procedura memorizzata Se si seleziona Stored procedure come input, specificare un nome della stored procedure per leggere i dati dalla tabella di origine, oppure selezionare Aggiorna per chiedere al servizio di individuare i nomi delle procedure. Sì, se si seleziona Stored procedure come input string procedureName
Parametri della procedura Se si seleziona Stored procedure come input, specificare i parametri di input per la stored procedure nell'ordine impostato nella procedura, oppure selezionare Importa per importare tutti i parametri della procedura usando il modulo @paraName. NO Array inputs
Dimensioni dei batch Specificare una dimensione del batch per suddividere i dati di grandi dimensioni in batch. NO Integer dimensione del batch
Livello di isolamento Scegliere uno dei livelli di isolamento seguenti:
- Lettura confermata (Read Committed)
- Read Uncommitted (impostazione predefinita)
- Lettura ripetibile
-Serializzabile
- Nessuno (ignora il livello di isolamento)
NO READ_COMMITTED
READ_UNCOMMITTED
LETTURA RIPETIBILE
SERIALIZABLE
NESSUNO
livello di isolamento

Esempio di script sorgente per Database di Azure per PostgreSQL

Quando si usa Database di Azure per PostgreSQL come tipo di origine, lo script del flusso di dati associato è:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from mytable',
    format: 'query') ~> AzurePostgreSQLSource

Trasformazione sink

Nella tabella seguente sono elencate le proprietà supportate da Database di Azure per PostgreSQL sink. È possibile modificare queste proprietà nella scheda Opzioni sink.

Nome Descrizione Obbligatoria Valori consentiti Proprietà script del flusso di dati
Metodo di aggiornamento Specificare le operazioni consentite nella destinazione del database. Per impostazione predefinita, sono consentiti solo gli inserimenti.
Per operazioni di aggiornamento, upsert o eliminazione di righe, è necessaria una trasformazione Altera riga perché i tag siano applicati alle righe per queste azioni.
true oppure false eliminabile
insertable
aggiornabile
upsertable
Colonne chiave Per gli aggiornamenti, gli upsert e le eliminazioni, è necessario impostare le colonne chiave per determinare quale riga modificare.
Il nome della colonna selezionato come chiave viene utilizzato come parte dell'aggiornamento, upsert e dell'eliminazione successiva. Pertanto, è necessario selezionare una colonna esistente nella mappatura Sink.
NO Array chiavi
Salta la scrittura delle colonne chiave Se si desidera non scrivere il valore nella colonna chiave, selezionare "Ignora la scrittura di colonne chiave". NO true oppure false skipKeyWrites
Azione Tabella Determina se ricreare o rimuovere tutte le righe dalla tabella di destinazione prima della scrittura.
- Nessuno: non viene eseguita alcuna azione per la tabella.
- Ricrea: la tabella viene eliminata e ricreata. Questa opzione è obbligatoria se si crea una nuova tabella in modo dinamico.
- Truncate: tutte le righe della tabella di destinazione vengono rimosse.
NO true oppure false ricreare
truncate
Dimensioni dei batch Specificare il numero di righe scritte in ogni batch. Le dimensioni batch più grandi migliorano la compressione e l'ottimizzazione della memoria, ma possono comportare il rischio di eccezioni di memoria insufficiente durante la memorizzazione nella cache dei dati. NO Integer dimensione del batch
Selezionare lo schema del database utente Per impostazione predefinita, viene creata una tabella temporanea nello schema sink come staging. In alternativa, è possibile deselezionare l'opzione Usa schema sink e specificare invece un nome di schema in cui Data Factory crea una tabella di staging per caricare i dati upstream e pulirli automaticamente al completamento. Assicurarsi di disporre dell'autorizzazione create table nel database e di modificare l'autorizzazione per lo schema. NO string stagingSchemaName
Pre e post-script SQL Specificare script SQL su più righe che verranno eseguiti prima (pre-elaborazione) e dopo la scrittura dei dati (post-elaborazione) nel database Sink. NO string preSQLs
postSQLs

Suggerimento

  1. Dividere gli script batch singoli con più comandi in più batch.
  2. Possono essere eseguite come parte di un batch solo le istruzioni DDL (Data Definition Language) e DML (Data Manipulation Language) che restituiscono un semplice conteggio di aggiornamento. Per altre informazioni, vedere Esecuzione di operazioni batch
  • Abilita estrazione incrementale: usare questa opzione per indicare ad ADF di elaborare solo le righe modificate dall'ultima esecuzione della pipeline.

  • Colonna incrementale: quando si usa la funzionalità di estrazione incrementale, è necessario scegliere la colonna data/ora o numerica da usare come filigrana nella tabella di origine.

  • Iniziare a leggere dall'inizio: l'impostazione di questa opzione con l'estrazione incrementale indica ad ADF di leggere tutte le righe alla prima esecuzione di una pipeline con l'estrazione incrementale attivata.

Esempio di script di destinazione per Database di Azure per PostgreSQL

Quando si usa Database di Azure per PostgreSQL come tipo di sink, lo script del flusso di dati associato è:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:false,
    insertable:true,
    updateable:true,
    upsertable:true,
    keys:['keyColumn'],
    format: 'table',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> AzurePostgreSqlSink

Attività dello script

Importante

L'attività script è supportata solo nel connettore versione 2.0.

Importante

Le istruzioni multi-query che usano parametri di output non sono supportate. È consigliabile suddividere tutte le query di output in blocchi di script separati all'interno della stessa o diversa attività di script.

Le istruzioni multi-query che usano parametri posizionali non sono supportate. È consigliabile suddividere tutte le query posizionali in blocchi di script separati all'interno della stessa attività di script o di attività di script diversa.

Per altre informazioni sull'attività script, vedere Attività script.

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività di Ricerca.

Aggiornare il connettore Database di Azure per PostgreSQL

Nella pagina Modifica servizio collegato selezionare 2.0 in Versione e configurare il servizio collegato facendo riferimento alle proprietà del servizio collegato versione 2.0.

Per un elenco degli archivi dati supportati dall'attività di copia come origini e destinazioni, vedere Archivi dati supportati.