Udostępnij przez


Kopiowanie i przekształcanie danych w usłudze Azure Database for PostgreSQL przy użyciu usługi Azure Data Factory lub Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Wskazówka

Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !

W tym artykule opisano sposób użycia działania kopiowania w potokach usługi Azure Data Factory i usługi Synapse Analytics w celu kopiowania danych z i do usługi Azure Database for PostgreSQL. I jak używać przepływu danych do przekształcania danych w usłudze Azure Database for PostgreSQL. Aby dowiedzieć się więcej, przeczytaj artykuły wprowadzające dotyczące usług Azure Data Factory i Synapse Analytics.

Ważne

Usługa Azure Database for PostgreSQL w wersji 2.0 zapewnia ulepszoną natywną obsługę usługi Azure Database for PostgreSQL. Jeśli używasz usługi Azure Database for PostgreSQL w wersji 1.0 w swoim rozwiązaniu, zaleca się uaktualnienie łącznika usługi Azure Database for PostgreSQL jak najszybciej.

Ten łącznik jest przeznaczony dla usługi Azure Database for PostgreSQL. Aby skopiować dane z ogólnej bazy danych PostgreSQL znajdującej się lokalnie lub w chmurze, użyj łącznika PostgreSQL.

Obsługiwane możliwości

Ten łącznik usługi Azure Database for PostgreSQL jest obsługiwany dla następujących funkcji:

Obsługiwane możliwości środowisko IR Zarządzany prywatny punkt końcowy Obsługiwane wersje łącznika
Działanie kopiowania (źródło/ujście) (1) (2) 1.0 i 2.0
Mapowanie przepływu danych (źródło/ujście) (1) 1.0 i 2.0
Aktywność wyszukiwania (1) (2) 1.0 i 2.0
Działanie skryptu (1) (2) 2.0

(1) Środowisko uruchomieniowe Azure (2) Lokalne środowisko uruchomieniowe

Trzy działania działają na pojedynczym serwerze usługi Azure Database for PostgreSQL, serwerze elastycznym i usłudze Azure Cosmos DB for PostgreSQL.

Ważne

Pojedynczy serwer usługi Azure Database for PostgreSQL zostanie wycofany 28 marca 2025 r. Przeprowadź migrację do elastycznego serwera przed tym terminem. Aby uzyskać wskazówki dotyczące migracji, zapoznaj się z tym artykułem i często zadawanymi pytaniami .

Wprowadzenie

Aby wykonać działanie kopiowania za pomocą pipeline'u, możesz użyć jednego z następujących narzędzi lub zestawów SDK:

Tworzenie połączonej usługi z usługą Azure Database for PostgreSQL przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę z usługą Azure Database for PostgreSQL w interfejsie użytkownika witryny Azure Portal.

  1. Przejdź do karty Zarządzanie w obszarze roboczym usługi Azure Data Factory lub Synapse i wybierz pozycję Połączone usługi, a następnie wybierz pozycję Nowe:

  2. Wyszukaj PostgreSQL i wybierz łącznik dla Azure Database for PostgreSQL.

    Wybierz łącznik bazy danych Azure dla PostgreSQL.

  3. Skonfiguruj szczegóły usługi, przetestuj połączenie i utwórz nową połączoną usługę.

    Skonfiguruj połączoną usługę dla bazy danych Azure dla PostgreSQL.

Szczegóły konfiguracji łącznika

Poniższe sekcje zawierają szczegółowe informacje o właściwościach używanych do definiowania jednostek usługi Data Factory specyficznych dla łącznika usługi Azure Database for PostgreSQL.

Właściwości połączonej usługi

Łącznik usługi Azure Database for PostgreSQL w wersji 2.0 obsługuje tryby Transport Layer Security (TLS) 1.3 i wiele trybów protokołu SSL (Secured Socket Layer). Zapoznaj się z tą sekcją , aby uaktualnić wersję łącznika usługi Azure SQL Database z wersji 1.0. Aby uzyskać informacje szczegółowe dotyczące nieruchomości, zobacz odpowiednie sekcje.

Wersja 2.0

Następujące właściwości są obsługiwane w przypadku połączonej usługi Azure Database for PostgreSQL w przypadku zastosowania wersji 2.0:

Nieruchomość Opis Wymagane
typ Właściwość type musi być ustawiona na: AzurePostgreSql. Tak
wersja Wersja, którą określisz. Wartość to 2.0. Tak
Typ uwierzytelniania Wybierz spośród podstawowego, głównego użytkownika usługi, tożsamości zarządzanej przypisanej przez system lub tożsamości zarządzanej przypisanej przez użytkownika typu uwierzytelniania. Tak
serwer Określa nazwę hosta i opcjonalnie port, na którym działa usługa Azure Database for PostgreSQL. Tak
port Port TCP serwera usługi Azure Database for PostgreSQL. Wartość domyślna to 5432. Nie.
baza danych Nazwa bazy danych usługi Azure Database for PostgreSQL do nawiązania połączenia. Tak
tryb SSL Określa, czy protokół SSL jest używany, w zależności od obsługi serwera.
- Wyłącz: protokół SSL jest wyłączony. Jeśli serwer wymaga protokołu SSL, połączenie zakończy się niepowodzeniem.
- Zezwalaj: preferuj połączenia inne niż SSL, jeśli zezwala na nie serwer, ale zezwalaj na połączenia SSL.
- Preferuj: Preferuj połączenia SSL, jeśli serwer zezwala na nie, ale zezwalaj na połączenia bez protokołu SSL.
- Wymagaj: połączenie nie powiedzie się, jeśli serwer nie obsługuje protokołu SSL.
- Verify-ca: Połączenie nie powiedzie się, jeśli serwer nie obsługuje protokołu SSL. Sprawdza również certyfikat serwera.
- Weryfikacja pełna: połączenie nie powiedzie się, jeśli serwer nie obsługuje protokołu SSL. Sprawdza również certyfikat serwera z nazwą hosta.
Opcje: Wyłącz (0) / Zezwalaj (1) / Preferuj (2) (ustawienie domyślne) / Wymagaj (3) / Verify-ca (4) / Verify-full (5)
Nie.
connectVia Ta właściwość reprezentuje środowisko Integration Runtime , które ma być używane do nawiązywania połączenia z magazynem danych. Możesz użyć środowiska Azure Integration Runtime lub własnego środowiska Integration Runtime (jeśli magazyn danych znajduje się w sieci prywatnej). Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.
Dodatkowe właściwości połączenia:
schemat Ustawia ścieżkę wyszukiwania schematu. Nie.
Łączenie Czy powinno się używać buforowania połączeń? Nie.
czas oczekiwania na połączenie Czas oczekiwania (w sekundach) podczas próby nawiązania połączenia przed zakończeniem próby i wygenerowaniem błędu. Nie.
Limit czasu wykonywania polecenia Czas oczekiwania (w sekundach) podczas próby wykonania polecenia przed zakończeniem próby i wygenerowaniem błędu. Ustaw wartość zero dla nieskończoności. Nie.
zaufajCertyfikatowiSerwera Czy ufać certyfikatowi serwera bez sprawdzania jego poprawności. Nie.
readBufferSize (rozmiar bufora) Określa rozmiar wewnętrznego buforu Npgsql używany podczas odczytywania. Zwiększenie może poprawić wydajność przy transferze dużych wartości z bazy danych. Nie.
strefa czasowa Pobiera lub ustawia strefę czasową sesji. Nie.
kodowanie Pobiera lub ustawia kodowanie .NET na potrzeby kodowania/dekodowania danych ciągu PostgreSQL. Nie.

uwierzytelnianie podstawowe

Nieruchomość Opis Wymagane
nazwa użytkownika Nazwa użytkownika do nawiązania połączenia. Nie jest wymagane w przypadku używania funkcji IntegratedSecurity. Tak
hasło Hasło do nawiązania połączenia. Nie jest wymagane w przypadku używania funkcji IntegratedSecurity. Oznacz to pole jako SecureString , aby bezpiecznie je przechowywać. Możesz też odwołać się do wpisu tajnego przechowywanego w usłudze Azure Key Vault. Tak

Przykład:

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

Przykład:

Przechowywanie hasła w usłudze 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>" 
            }
        }
    }
}

Uwierzytelnianie tożsamości zarządzanej, nadanej przez system

Obszar roboczy fabryki danych lub usługi Synapse może być skojarzony z tożsamością zarządzaną przypisaną przez system , która reprezentuje usługę podczas uwierzytelniania w innych zasobach na platformie Azure. Tej tożsamości zarządzanej można użyć do uwierzytelniania usługi Azure Database for PostgreSQL. Wyznaczona fabryka lub obszar roboczy usługi Synapse mogą uzyskiwać dostęp do danych lub do bazy danych oraz kopiować je przy użyciu tej tożsamości.

Aby użyć tożsamości zarządzanej przypisanej przez system, wykonaj następujące kroki:

  1. Fabrykę danych lub obszar roboczy usługi Synapse można skojarzyć z tożsamością zarządzaną przypisaną przez system. Dowiedz się więcej, Generowanie tożsamości zarządzanej przypisanej przez system

  2. Dane Azure dla PostgreSQL z przypisaną przez system zarządzaną tożsamością Włączone.

    Zrzut ekranu przedstawiający konfigurację zarządzanej tożsamości przypisanej przez system w usłudze Azure Database for PostgreSQL.

  3. W zasobie usługi Azure Database for PostgreSQL w obszarze Zabezpieczenia

    1. Wybierz Uwierzytelnianie

    2. Wybierz metodę uwierzytelniania: tylko uwierzytelnianie Entra firmy Microsoft lub uwierzytelnianie PostgreSQL i Microsoft Entra.

    3. Wybierz + Dodaj administratorów Microsoft Entra

    4. Dodaj tożsamość zarządzaną przypisaną przez system dla zasobu usługi Azure Data Factory jako jednego z administratorów Microsoft Entra

      Zrzut ekranu przedstawiający dodawanie tożsamości zarządzanej przypisanej przez system w konfiguracji usługi Azure Database for PostgreSQL.

  4. Skonfigurować połączoną usługę bazy danych Azure dla PostgreSQL.

Przykład:

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

Uwaga / Notatka

Ten typ uwierzytelniania nie jest obsługiwany w własnym środowisku Integration Runtime.

Uwierzytelnianie zarządzanej tożsamości przypisanej przez użytkownika

Obszar roboczy fabryki danych lub usługi Synapse może być skojarzony z tożsamością zarządzaną przypisaną przez użytkownika , która reprezentuje usługę podczas uwierzytelniania w innych zasobach na platformie Azure. Tej tożsamości zarządzanej można użyć do uwierzytelniania usługi Azure Database for PostgreSQL. Wyznaczona fabryka lub obszar roboczy usługi Synapse mogą uzyskiwać dostęp do danych lub do bazy danych oraz kopiować je przy użyciu tej tożsamości.

Aby użyć uwierzytelniania tożsamości zarządzanej przypisanej przez użytkownika, oprócz właściwości ogólnych opisanych w poprzedniej sekcji, określ następujące właściwości:

Nieruchomość Opis Wymagane
poświadczenie Określ tożsamość zarządzaną przypisaną przez użytkownika jako obiekt poświadczeń. Tak

Należy również wykonać następujące czynności:

  1. Pamiętaj, aby utworzyć zasób tożsamości zarządzanej przypisanej przez użytkownika w witrynie Azure Portal. Aby dowiedzieć się więcej, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika

  2. Przypisz tożsamość zarządzaną przypisaną przez użytkownika do zasobu Azure Database for PostgreSQL

    1. W zasobie serwera usługi Azure Database for PostgreSQL w obszarze Zabezpieczenia

    2. Wybierz Uwierzytelnianie

    3. Sprawdź, czy metoda uwierzytelniania to tylko uwierzytelnianie Microsoft Entra czy uwierzytelnianie PostgreSQL i Microsoft Entra

    4. Wybierz łącze + Dodaj administratorów Microsoft Entra i wybierz przypisaną przez użytkownika tożsamość zarządzaną.

      Zrzut ekranu przedstawiający konfigurację tożsamości zarządzanej przypisanej przez użytkownika na serwerze usługi Azure Database for PostgreSQL.

  3. Przypisywanie tożsamości zarządzanej przypisanej przez użytkownika do zasobu usługi Azure Data Factory

    1. Wybierz Ustawienia, a następnie Tożsamości zarządzane

    2. Na karcie Przypisano użytkownika. Wybierz link + Dodaj i wybierz tożsamość zarządzaną przez użytkownika.

      Zrzut ekranu przedstawiający konfigurację tożsamości zarządzanej przypisanej przez użytkownika w zasobie usługi Azure Data Factory.

  4. Skonfigurować połączoną usługę bazy danych Azure dla PostgreSQL.

Przykład:

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

Uwierzytelnianie głównego elementu usługi

Nieruchomość Opis Wymagane
nazwa użytkownika Nazwa wyświetlana jednostki usługi Tak
dzierżawa Tenant, w którym znajduje się serwer Azure Database for PostgreSQL Tak
IdentyfikatorGłównegoSerwisu Identyfikator aplikacji jednostki usługi Tak
typUwierzytelnieniaPodmiotuUsługi Wybierz, czy certyfikat jednostki usługi lub klucz jednostki usługi jest żądaną metodą uwierzytelniania
- ServicePrincipalCert: ustaw wartość na certyfikat jednostki usługi dla certyfikatu jednostki usługi.
- ServicePrincipalKey: Ustaw klucz jednostki usługi dla uwierzytelniania za pomocą klucza jednostki usługi.
Tak
klucz Głównego Usługodawcy Wartość tajemnicy klienta. Używany podczas wybierania klucza jednostki usługi Tak
azureCloudType (typ chmury Azure) Wybierz typ chmury platformy Azure serwera usługi Azure Database for PostgreSQL Tak
certyfikat osadzony głównego serwisu Plik certyfikatu jednostki usługi Tak
servicePrincipalEmbeddedCertPassword W razie potrzeby hasło certyfikatu głównego użytkownika usługi Nie.

Przykład:

Klucz Service Principal

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

Przykład:

Certyfikat podmiotu usługi

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

Uwaga / Notatka

Uwierzytelnianie identyfikatora Entra firmy Microsoft przy użyciu jednostki usługi i tożsamości zarządzanej przypisanej przez użytkownika jest obsługiwane w środowisku Integration Runtime własnym w wersji 5.50 lub nowszej.

Wersja 1.0

Podczas stosowania wersji 1.0 obsługiwane są następujące właściwości połączonej usługi Azure Database for PostgreSQL:

Nieruchomość Opis Wymagane
typ Właściwość type musi być ustawiona na: AzurePostgreSql. Tak
wersja Wersja, którą określisz. Wartość to 1.0. Tak
Parametry połączenia Parametry połączenia serwera Npgsql służące do nawiązywania połączenia z usługą Azure Database for PostgreSQL.
Możesz również umieścić hasło w usłudze Azure Key Vault i wydobyć password konfigurację z ciągu połączenia. Aby uzyskać więcej informacji, zobacz poniższe przykłady i przechowuj poświadczenia w usłudze Azure Key Vault.
Tak
connectVia Ta właściwość reprezentuje środowisko Integration Runtime , które ma być używane do nawiązywania połączenia z magazynem danych. Możesz użyć środowiska Azure Integration Runtime lub własnego środowiska Integration Runtime (jeśli magazyn danych znajduje się w sieci prywatnej). Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.

Typowy parametry połączenia to host=<server>.postgres.database.azure.com;database=<database>;port=<port>;uid=<username>;password=<password>. Poniżej przedstawiono więcej właściwości, które można ustawić dla danego przypadku:

Nieruchomość Opis Opcje Wymagane
EncryptionMethod (EM) Metoda używana przez sterownik do szyfrowania danych wysyłanych między sterownikiem a serwerem bazy danych. Na przykład EncryptionMethod=<0/1/6>; 0 (bez szyfrowania) (ustawienie domyślne) / 1 (SSL) / 6 (RequestSSL) Nie.
ValidateServerCertificate (VSC) Określa, czy sterownik weryfikuje certyfikat wysyłany przez serwer bazy danych po włączeniu szyfrowania SSL (Metoda szyfrowania=1). Na przykład ValidateServerCertificate=<0/1>; 0 (wyłączone) (ustawienie domyślne) / 1 (włączone) Nie.

Przykład:

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

Przykład:

Przechowywanie hasła w usłudze 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>" 
            }
        }
    }
}

Właściwości zestawu danych

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania zestawów danych, zobacz Zestawy danych. Ta sekcja zawiera listę właściwości obsługiwanych przez usługę Azure Database for PostgreSQL w zestawach danych.

Aby skopiować dane z usługi Azure Database for PostgreSQL, ustaw właściwość type zestawu danych na AzurePostgreSqlTable. Obsługiwane są następujące właściwości:

Nieruchomość Opis Wymagane
typ Właściwość type zbioru danych musi być ustawiona na AzurePostgreSqlTable. Tak
schemat Nazwa schematu. Nie (jeśli w źródle aktywności określono "zapytanie")
tabela Nazwa tabeli/widoku. Nie (jeśli w źródle aktywności określono "zapytanie")
nazwaTabeli Nazwa tabeli. Ta właściwość jest obsługiwana w celu zapewnienia zgodności z poprzednimi wersjami. W przypadku nowego obciążenia użyj schema i table. Nie (jeśli w źródle aktywności określono "zapytanie")

Przykład:

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

Właściwości działania kopiowania

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz Potoki i działania. Ta sekcja zawiera listę właściwości obsługiwanych przez źródło usługi Azure Database for PostgreSQL.

Usługa Azure Database for PostgreSql jako źródło

Aby skopiować dane z usługi Azure Database for PostgreSQL, ustaw typ źródła w działaniu kopiowania na AzurePostgreSqlSource. Następujące właściwości są obsługiwane w sekcji źródło działania kopiowania:

Nieruchomość Opis Wymagane
typ Właściwość type źródła działania kopiowania musi być ustawiona na Wartość AzurePostgreSqlSource Tak
kwerenda Użyj niestandardowego zapytania SQL, aby odczytać dane. Na przykład: SELECT * FROM mytable lub SELECT * FROM "MyTable". W PostgreSQL, należy zauważyć, że nazwa obiektu jest traktowana jako nie uwzględniająca wielkości liter, jeśli nie jest ujęta w cudzysłów. Nie (jeśli właściwość tableName w zestawie danych jest określona)
limit czasu zapytania Czas oczekiwania przed zakończeniem próby wykonania polecenia i wygenerowaniem błędu wartość domyślna to 120 minut. Jeśli parametr jest ustawiony dla tej właściwości, dozwolone wartości są przedziałem czasu, takim jak "02:00:00" (120 minut). Aby uzyskać więcej informacji, zobacz CommandTimeout. Nie.
opcje podziału Określa opcje partycjonowania danych używane do ładowania danych z usługi Azure SQL Database.
Dozwolone wartości to: Brak (wartość domyślna), PhysicalPartitionsOfTable i DynamicRange.
Jeśli opcja partycji jest włączona (czyli nie None), stopień równoległości podczas równoczesnego ładowania danych z usługi Azure SQL Database jest kontrolowany przez ustawienie parallelCopies w działaniu kopiowania.
Nie.
ustawienia partycji Określ grupę ustawień partycjonowania danych.
Zastosuj, gdy opcja partycji nie jest None.
Nie.
W obszarze partitionSettings:
nazwy partycji Lista partycji fizycznych, które należy skopiować.
Zastosuj, gdy opcja partycji to PhysicalPartitionsOfTable. Jeśli używasz zapytania do pobierania danych źródłowych, wstaw ?AdfTabularPartitionName w klauzuli WHERE. Aby zapoznać się z przykładem, zobacz sekcję Kopia równoległa z usługi Azure Database for PostgreSQL .
Nie.
nazwa kolumny partycji Określ nazwę kolumny źródłowej o typie liczbowym lub daty/czasu (int, smallint, bigint, date, timestamp without time zone, timestamp with time zone lub time without time zone), które będą używane przez partycjonowanie zakresu na potrzeby kopiowania równoległego. Jeśli klucz podstawowy tabeli nie zostanie określony, zostanie on automatycznie wykryty i użyty jako kolumna partycji.
Zastosuj, gdy opcja partycji to DynamicRange. Jeśli używasz zapytania do pobierania danych źródłowych, wstaw ?AdfRangePartitionColumnName w klauzuli WHERE. Aby zapoznać się z przykładem, zobacz sekcję Kopia równoległa z usługi Azure Database for PostgreSQL .
Nie.
górna granica partycji Maksymalna wartość kolumny partycji do skopiowania danych.
Zastosuj, gdy opcja partycji to DynamicRange. Jeśli używasz zapytania do pobierania danych źródłowych, wstaw ?AdfRangePartitionUpbound w klauzuli WHERE. Aby zapoznać się z przykładem, zobacz sekcję Kopia równoległa z usługi Azure Database for PostgreSQL .
Nie.
dolna granica partycji Minimalna wartość kolumny partycji do skopiowania danych.
Zastosuj, gdy opcja partycji to DynamicRange. Jeśli używasz zapytania do pobierania danych źródłowych, wstaw ?AdfRangePartitionLowbound w klauzuli WHERE. Aby zapoznać się z przykładem, zobacz sekcję Kopia równoległa z usługi Azure Database for PostgreSQL .
Nie.

Przykład:

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

Azure Database for PostgreSQL jako ujście

Aby skopiować dane do usługi Azure Database for PostgreSQL, ustaw typ ujścia w działaniu kopiowania na sqlSink. Następujące właściwości są obsługiwane w sekcji ujścia działania kopiowania:

Nieruchomość Opis Wymagane Wersja obsługi łącznika
typ Właściwość typ końca działania kopiowania musi być ustawiona na AzurePostgreSQLSink. Tak Wersja 1.0 i wersja 2.0
preCopyScript Określ zapytanie SQL dla działania kopiowania do wykonania przed zapisaniem danych w usłudze Azure Database for PostgreSQL w każdym uruchomieniu. Za pomocą tej właściwości można wyczyścić wstępnie załadowane dane. Nie. Wersja 1.0 i wersja 2.0
writeMethod Metoda używana do zapisywania danych w usłudze Azure Database for PostgreSQL.
Dozwolone wartości to: CopyCommand (wartość domyślna, która jest bardziej wydajna), BulkInsert i Upsert (tylko wersja 2.0).
Nie. Wersja 1.0 i wersja 2.0
upsertSettings Określ grupę ustawień zachowania zapisu.
Zastosuj, gdy opcja WriteBehavior ma wartość Upsert.
Nie. Wersja 2.0
W obszarze upsertSettings:
klucze Określ nazwy kolumn dla unikatowej identyfikacji wierszy. Można użyć pojedynczego klucza lub serii kluczy. Klucze muszą być kluczem podstawowym lub unikalną kolumną. Jeśli nie zostanie określony, używany jest klucz podstawowy. Nie. Wersja 2.0
writeBatchSize Liczba wierszy załadowanych do usługi Azure Database for PostgreSQL na partię.
Dozwolona wartość to liczba całkowita reprezentująca liczbę wierszy.
Nie (wartość domyślna to 1000 000) Wersja 1.0 i wersja 2.0
writeBatchTimeout Czas oczekiwania na zakończenie operacji wsadowego wstawiania przed przekroczeniem limitu czasu.
Dozwolone wartości to ciągi znaków określające przedziały czasu. Przykładem jest 00:30:00 (30 minut).
Nie (wartość domyślna to 00:30:00) Wersja 1.0 i wersja 2.0

Przykład 1. Polecenie kopiowania

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

Przykład 2: Aktualizacja lub wstawianie danych

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

Aktualizuj lub dodaj dane

Działanie kopiowania obsługuje operacje upsert w sposób natywny. Aby wykonać operację upsert, użytkownik powinien podać kolumny kluczy, które są kluczami podstawowymi lub unikatowymi. Jeśli użytkownik nie udostępnia kolumn kluczy, zostaną użyte kolumny klucza podstawowego w tabeli ujścia. Działanie kopiowania spowoduje zaktualizowanie kolumn innych niż klucz w tabeli ujścia, w której wartości kolumny klucza są zgodne z wartościami w tabeli źródłowej; w przeciwnym razie wstawi nowe dane.

Kopiowanie równoległe z usługi Azure Database for PostgreSQL

Łącznik usługi Azure Database for PostgreSQL w działaniu kopiowania zapewnia wbudowane partycjonowanie danych w celu równoległego kopiowania danych. Opcje partycjonowania danych można znaleźć na karcie Źródło działania kopiowania.

Zrzut ekranu przedstawiający opcje partycji

Po włączeniu kopii partycjonowanej działanie kopiowania uruchamia zapytania równoległe względem źródła usługi Azure Database for PostgreSQL w celu załadowania danych według partycji. Stopień równoległości jest kontrolowany przez ustawienie parallelCopies na działaniu kopiowania. Jeśli na przykład ustawisz parallelCopies na cztery, usługa równocześnie generuje i uruchamia cztery zapytania w oparciu o określoną opcję partycji i ustawienia, a każde zapytanie pobiera część danych z bazy danych Azure dla PostgreSQL.

Zaleca się włączenie kopiowania równoległego przy użyciu partycjonowania danych, szczególnie w przypadku ładowania dużej ilości danych z usługi Azure Database for PostgreSQL. Poniżej przedstawiono sugerowane konfiguracje dla różnych scenariuszy. Podczas kopiowania danych do magazynu danych opartego na plikach zaleca się zapisanie w folderze jako wielu plików (tylko określenie nazwy folderu), w którym przypadku wydajność jest lepsza niż zapisywanie w jednym pliku.

Scenariusz Sugerowane ustawienia
Pełne ładowanie dużej tabeli z fizycznymi partycjami. Opcja partycjonowania: fizyczne partycje tabeli.

Podczas wykonywania usługa automatycznie wykrywa partycje fizyczne i kopiuje dane według partycji.
Pełne ładowanie z dużej tabeli, bez partycji fizycznych, ale z kolumną całkowitą na potrzeby partycjonowania danych. Opcje partycji: partycja zakresu dynamicznego.
Kolumna partycji: określ kolumnę używaną do partycjonowania danych. Jeśli nic nie zostanie określone, zostanie użyta kolumna klucza podstawowego.
Dużą ilość danych ładuj przy użyciu zapytania niestandardowego z wykorzystaniem partycji fizycznych. Opcja partycjonowania: fizyczne partycje tabeli.
Zapytanie: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause>.
Nazwa partycji: określ co najmniej jedną nazwę partycji do skopiowania danych. Jeśli parametr nie zostanie określony, usługa automatycznie wykryje partycje fizyczne dla tabeli określonej w zestawie danych PostgreSQL.

Podczas wykonywania usługa zastępuje ?AdfTabularPartitionName rzeczywistą nazwą partycji i wysyła do usługi Azure Database for PostgreSQL.
Załaduj dużą ilość danych przy użyciu zapytania niestandardowego, bez partycji fizycznych, natomiast z kolumną całkowitą na potrzeby partycjonowania danych. Opcje partycji: partycja zakresu dynamicznego.
Zapytanie: SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Kolumna partycji: określ kolumnę używaną do partycjonowania danych. Możesz dokonać partycji kolumny według typu danych: całkowitego, daty lub daty/czasu.
Górna granica partycji i dolna granica partycji: określ, czy chcesz filtrować względem kolumny partycji, aby pobrać dane tylko między dolnym i górnym zakresem.

Podczas wykonywania usługa zastępuje ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound i ?AdfRangePartitionLowbound rzeczywistymi nazwami kolumn i zakresami wartości dla każdej partycji i wysyła do Azure Database for PostgreSQL.
Jeśli na przykład kolumnę partycji "ID" ustawiono z dolną granicą jako 1 i górną granicą jako 80, przy ustawieniu liczby kopii równoległych na 4, usługa pobiera dane w czterech partycjach. Ich identyfikatory to odpowiednio [1, 20], [21, 40], [41, 60] i [61, 80].

Najlepsze rozwiązania dotyczące ładowania danych z opcją partycji:

  1. Wybierz charakterystyczną kolumnę jako kolumnę partycji (np. klucz podstawowy lub unikatowy klucz), aby uniknąć niesymetryczności danych.
  2. Jeśli tabela ma wbudowaną partycję, użyj opcji partycji "Partycje fizyczne tabeli", aby uzyskać lepszą wydajność.
  3. Jeśli używasz środowiska Azure Integration Runtime do kopiowania danych, możesz ustawić większe wartości "Jednostki integracji danych (DIU)" (>4), aby korzystać z większych zasobów obliczeniowych. Sprawdź odpowiednie dla danego przypadku scenariusze.
  4. Stopień równoległości kopiowania steruje numerami partycji, a ustawienie tej liczby zbyt dużej czasami wpływa negatywnie na wydajność. Zaleca się ustawienie tej liczby jako (DIU lub liczba samodzielnie hostowanych węzłów IR) * (2 do 4).

Przykład: pełne załadowanie z dużej tabeli z fizycznymi partycjami

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

Przykład: zapytanie z dynamicznym zakresem partycji

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

Mapowanie właściwości przepływu danych

Podczas przekształcania danych w przepływie mapowania danych można odczytywać i zapisywać w tabelach z usługi Azure Database for PostgreSQL. Aby uzyskać więcej informacji, zobacz transformację źródła i transformację ujścia w przepływach danych mapowania. Możesz użyć zestawu danych usługi Azure Database for PostgreSQL lub wbudowanego zestawu danych jako typu źródła i ujścia.

Uwaga / Notatka

Obecnie w przypadku wersji 1 i 2 łącznika usługi Azure Database for PostgreSQL w przepływach danych mapowania obsługiwane jest tylko uwierzytelnianie podstawowe.

Przekształcanie źródła

Poniższa tabela zawiera listę właściwości obsługiwanych przez źródło usługi Azure Database for PostgreSQL. Te właściwości można edytować na karcie Opcje źródła.

Nazwa/nazwisko Opis Wymagane Dozwolone wartości Właściwość skryptu przepływu danych
Tabela Jeśli wybierzesz Tabelę jako dane wejściowe, przepływ danych pobierze wszystkie dane z tabeli określonej w zestawie danych. Nie. - (tylko w przypadku wbudowanego zestawu danych)
nazwaTabeli
Zapytanie Jeśli wybierzesz pozycję Zapytanie jako dane wejściowe, określ zapytanie SQL, aby pobrać dane ze źródła, które zastępuje dowolną tabelę, którą określisz w zestawie danych. Korzystanie z zapytań to doskonały sposób na zmniejszenie liczby wierszy na potrzeby testowania lub wyszukiwania.

Klauzula Order By nie jest obsługiwana, ale można ustawić pełną instrukcję SELECT FROM. Można również użyć funkcji tabeli zdefiniowanych przez użytkownika. select * from udfGetData() jest funkcją zdefiniowaną przez użytkownika (UDF) w SQL, która zwraca tabelę do użycia w przepływie danych.
Przykład zapytania: select * from mytable where customerId > 1000 and customerId < 2000 lub select * from "MyTable". W PostgreSQL, należy zauważyć, że nazwa obiektu jest traktowana jako nie uwzględniająca wielkości liter, jeśli nie jest ujęta w cudzysłów.
Nie. Sznurek kwerenda
Nazwa schematu Jeśli wybierzesz procedurę składowaną jako dane wejściowe, określ nazwę schematu procedury składowanej lub wybierz pozycję Odśwież, aby poprosić usługę o odnalezienie nazw schematów. Nie. Sznurek nazwa schematu
Procedura składowana Jeśli wybierzesz procedurę składowaną jako dane wejściowe, określ nazwę procedury składowanej do odczytu danych z tabeli źródłowej lub wybierz pozycję Odśwież, aby poprosić usługę o odnalezienie nazw procedur. Tak (jeśli wybierzesz procedurę składowaną jako dane wejściowe) Sznurek nazwaProcedury
Parametry procedury Jeśli wybierzesz procedurę składowaną jako dane wejściowe, określ parametry wejściowe procedury składowanej w kolejności ustawionej w procedurze lub wybierz pozycję Importuj, aby zaimportować wszystkie parametry procedury przy użyciu formularza @paraName. Nie. Tablica Wejścia
Rozmiar partii Określ rozmiar partii, aby podzielić duże dane na partie. Nie. Liczba całkowita batchSize (rozmiar wsadu)
Poziom izolacji Wybierz jeden z następujących poziomów izolacji:
- Odczyt zatwierdzony
- Odczyt niezatwierdzony (ustawienie domyślne)
- Powtarzalny odczyt
-Serializowalny
- Brak (ignoruj poziom izolacji)
Nie. ODCZYT_ZOBOWIĄZANY
READ_UNCOMMITTED (odczyt niezadeklarowany)
POWTARZALNY ODCZYT
SERIALIZOWALNY
ŻADEN
poziom izolacji

Przykład skryptu źródłowego usługi Azure Database for PostgreSQL

Jeśli używasz usługi Azure Database for PostgreSQL jako typu źródła, skojarzony skrypt przepływu danych to:

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

Przekształcenie zlewu

W poniższej tabeli wymieniono właściwości obsługiwane przez odbiornik bazy danych Azure Database for PostgreSQL. Te właściwości można edytować na karcie Opcje przetwarzania.

Nazwa/nazwisko Opis Wymagane Dozwolone wartości Właściwość skryptu przepływu danych
Metoda aktualizacji Określ, jakie operacje są dozwolone w miejscu docelowym bazy danych. Ustawieniem domyślnym jest zezwalanie tylko na wstawianie.
Aby zaktualizować, dodać lub usunąć wiersze, wymagane jest przekształcenie Alter row do oznaczania wierszy dla tych akcji.
Tak true lub false możliwe do usunięcia
wstawialny
możliwe do aktualizacji
możliwość aktualizacji lub dodawania
Kolumny kluczy W przypadku aktualizacji, operacji upsert i usuwania należy ustawić kolumny kluczy, aby określić, który wiersz ma zostać zmieniony.
Nazwa kolumny wybrana jako klucz jest używana w ramach kolejnej aktualizacji, czyszczenia danych (upsert), usuwania. W związku z tym należy wybrać kolumnę, która istnieje w mapowaniu ujścia.
Nie. Tablica klucze
Pomijaj zapisywanie kolumn kluczy Jeśli nie chcesz zapisywać wartości w kolumnie klucza, wybierz pozycję "Pomiń pisanie kolumn kluczy". Nie. true lub false PomijajZapisyKluczy
Działanie tabeli Określa, czy należy ponownie utworzyć lub usunąć wszystkie wiersze z tabeli docelowej przed zapisem.
- Brak: nie przeprowadzono żadnych działań na tabeli.
- Odtwórz: tabela zostaje usunięta i odtworzona. Wymagane w przypadku dynamicznego tworzenia nowej tabeli.
- Usuwanie danych: Wszystkie wiersze z tabeli docelowej zostaną usunięte.
Nie. true lub false odtworzyć
obcinać
Rozmiar partii Określ liczbę wierszy zapisywanych w każdej partii. Większe rozmiary partii poprawiają kompresję i optymalizację pamięci, ale niosą ryzyko wystąpienia wyjątków związanych z brakiem pamięci podczas buforowania danych. Nie. Liczba całkowita batchSize (rozmiar wsadu)
Wybieranie schematu bazy danych użytkownika Domyślnie tabela tymczasowa jest tworzona w schemacie docelowym jako tabela przejściowa. Alternatywnie można usunąć zaznaczenie opcji Użyj schematu ujścia , a zamiast tego określić nazwę schematu, w ramach którego usługa Data Factory tworzy tabelę przejściową w celu załadowania danych nadrzędnych i automatycznego czyszczenia ich po zakończeniu. Upewnij się, że masz uprawnienie do tworzenia tabeli w bazie danych i zmień uprawnienia w schemacie. Nie. Sznurek nazwaSchematutestowego
Skrypty SQL przed i po Określ wielowierszowe skrypty SQL, które będą wykonywane przed (wstępne przetwarzanie) i po (przetwarzanie końcowe) zapisaniem danych w bazie danych docelowej. Nie. Sznurek przygotowane zapytania SQL
postSQLs

Wskazówka

  1. Podziel skrypty jednosadowe z wieloma poleceniami na wiele partii.
  2. W ramach partii można uruchamiać tylko instrukcje języka DDL (Data Definition Language) i Języka manipulowania danymi (DML), które zwracają prostą liczbę aktualizacji. Dowiedz się więcej na temat wykonywania operacji wsadowych
  • Włącz wyodrębnianie przyrostowe: Wybierz tę opcję, aby poinformować usługę ADF, że ma przetwarzać tylko wiersze, które uległy zmianie od momentu ostatniego uruchomienia potoku.

  • Kolumna inkrementalna: podczas korzystania z funkcji ekstrakcji inkrementalnej należy wybrać kolumnę daty/czasu lub kolumnę liczbową, której chcesz używać jako znacznika w tabeli źródłowej.

  • Rozpocznij odczytywanie od początku: Ustawienie tej opcji w przypadku wyodrębniania przyrostowego powoduje, że podczas pierwszego uruchomienia potoku z włączonym wyodrębnieniem przyrostowym usługa ADF odczytuje wszystkie wiersze.

Przykładowy skrypt ujścia usługi Azure Database for PostgreSQL

Jeśli używasz usługi Azure Database for PostgreSQL jako typu ujścia, skojarzony skrypt przepływu danych to:

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

Działanie skryptu

Ważne

Działanie skryptu jest obsługiwane tylko w łączniku w wersji 2.0.

Ważne

Instrukcje z wieloma zapytaniami przy użyciu parametrów wyjściowych nie są obsługiwane. Zaleca się podzielenie zapytań wyjściowych na oddzielne bloki skryptów w ramach tego samego lub innego działania skryptu.

Instrukcje z wieloma zapytaniami przy użyciu parametrów pozycyjnych nie są obsługiwane. Zaleca się podzielenie zapytań pozycyjnych na oddzielne bloki skryptów w ramach tego samego lub innego działania skryptu.

Aby uzyskać więcej informacji na temat działania skryptu, zobacz Działanie skryptu.

Właściwości czynności wyszukiwania

Aby uzyskać więcej informacji na temat właściwości, zobacz Aktywność wyszukiwania.

Uaktualnianie łącznika usługi Azure Database for PostgreSQL

Na stronie Edytowanie połączonej usługi wybierz pozycję 2.0 w obszarze Wersja i skonfiguruj połączoną usługę, odwołując się do właściwości połączonej usługi w wersji 2.0.

Aby uzyskać listę magazynów danych obsługiwanych jako źródła i ujścia działania kopiowania, zobacz Obsługiwane magazyny danych.