Udostępnij za pośrednictwem


Kopiowanie danych z bazy danych PostgreSQL przy użyciu usługi Azure Data Factory lub Synapse Analytics

DOTYCZY: Azure Data Factory Azure Synapse Analytics

Napiwek

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żywania działania kopiowania w potokach usługi Azure Data Factory i usługi Synapse Analytics do kopiowania danych z bazy danych PostgreSQL. Jest on oparty na artykule omówienie działania kopiowania, który przedstawia ogólne omówienie działania kopiowania.

Ważne

Nowy łącznik PostgreSQL zapewnia ulepszoną natywną obsługę bazy danych PostgreSQL. Jeśli używasz starszego łącznika PostgreSQL w swoim rozwiązaniu, uaktualnij łącznik PostgreSQL przed 31 października 2024 r. Zapoznaj się z tą sekcją , aby uzyskać szczegółowe informacje na temat różnicy między starszą i najnowszą wersją.

Obsługiwane możliwości

Ten łącznik PostgreSQL jest obsługiwany w następujących funkcjach:

Obsługiwane możliwości IR
działanie Kopiuj (źródło/-) (1) (2)
Działanie Lookup (1) (2)

(1) Środowisko Azure Integration Runtime (2) Self-hosted Integration Runtime

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

W szczególności ten łącznik PostgreSQL obsługuje program PostgreSQL w wersji 7.4 lub nowszej.

Wymagania wstępne

Jeśli magazyn danych znajduje się wewnątrz sieci lokalnej, sieci wirtualnej platformy Azure lub chmury prywatnej Amazon Virtual, musisz skonfigurować własne środowisko Integration Runtime , aby się z nim połączyć.

Jeśli magazyn danych jest zarządzaną usługą danych w chmurze, możesz użyć środowiska Azure Integration Runtime. Jeśli dostęp jest ograniczony do adresów IP zatwierdzonych w regułach zapory, możesz dodać adresy IP środowiska Azure Integration Runtime do listy dozwolonych.

Możesz również użyć funkcji środowiska Integration Runtime zarządzanej sieci wirtualnej w usłudze Azure Data Factory, aby uzyskać dostęp do sieci lokalnej bez instalowania i konfigurowania własnego środowiska Integration Runtime.

Aby uzyskać więcej informacji na temat mechanizmów zabezpieczeń sieci i opcji obsługiwanych przez usługę Data Factory, zobacz Strategie dostępu do danych.

Środowisko Integration Runtime udostępnia wbudowany sterownik PostgreSQL, począwszy od wersji 3.7, dlatego nie trzeba ręcznie instalować żadnego sterownika.

Wprowadzenie

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

Tworzenie połączonej usługi z bazą danych PostgreSQL przy użyciu interfejsu użytkownika

Wykonaj poniższe kroki, aby utworzyć połączoną usługę z bazą danych 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 kliknij pozycję Nowy:

  2. Wyszukaj pozycję Postgre i wybierz łącznik PostgreSQL.

    Wybierz łącznik PostgreSQL.

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

    Skonfiguruj połączoną usługę do bazy danych 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 PostgreSQL.

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

Następujące właściwości są obsługiwane w przypadku połączonej usługi PostgreSQL:

Właściwości Opis Wymagania
type Właściwość type musi być ustawiona na: PostgreSqlV2 Tak
serwer Określa nazwę hosta — i opcjonalnie port — na którym działa program PostgreSQL. Tak
port Port TCP serwera PostgreSQL. Nie.
database Baza danych PostgreSQL do nawiązania połączenia. Tak
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. Tak
sslMode 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: Nie można nawiązać połączenia, jeśli serwer nie obsługuje protokołu SSL.
- Verify-ca: Nie można nawiązać połączenia, jeśli serwer nie obsługuje protokołu SSL. Sprawdza również certyfikat serwera.
- Weryfikacja pełna: Nie można nawiązać połączenia, 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.
authenticationType Typ uwierzytelniania na potrzeby nawiązywania połączenia z bazą danych. Obsługuje tylko warstwę Podstawowa. Tak
connectVia Środowisko Integration Runtime do nawiązania połączenia z magazynem danych. Dowiedz się więcej w sekcji Wymagania wstępne . Jeśli nie zostanie określony, używa domyślnego środowiska Azure Integration Runtime. Nie.
Dodatkowe właściwości połączenia:
schema Ustawia ścieżkę wyszukiwania schematu. Nie.
Buforowanie Czy należy używać buforowania połączeń. Nie.
connectionTimeout Czas oczekiwania (w sekundach) podczas próby nawiązania połączenia przed zakończeniem próby i wygenerowaniem błędu. Nie.
commandTimeout 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.
trustServerCertificate Czy ufać certyfikatowi serwera bez sprawdzania jego poprawności. Nie.
sslCertificate Lokalizacja certyfikatu klienta do wysłania na serwer. Nie.
sslKey Lokalizacja klucza klienta certyfikatu klienta, który ma zostać wysłany do serwera. Nie.
sslPassword Hasło klucza certyfikatu klienta. Nie.
readBufferSize Określa rozmiar wewnętrznego buforu Npgsql używany podczas odczytywania. Zwiększenie wydajności może zwiększyć wydajność w przypadku transferu dużych wartości z bazy danych. Nie.
logParameters Po włączeniu wartości parametrów są rejestrowane po wykonaniu poleceń. Nie.
timezone Pobiera lub ustawia strefę czasową sesji. Nie.
encoding Pobiera lub ustawia kodowanie .NET, które będzie używane do kodowania/dekodowania danych ciągu PostgreSQL. Nie.

Uwaga

Aby mieć pełną weryfikację SSL za pośrednictwem połączenia ODBC w przypadku korzystania z własnego środowiska Integration Runtime, należy jawnie użyć połączenia typu ODBC zamiast łącznika PostgreSQL i ukończyć następującą konfigurację:

  1. Skonfiguruj nazwę DSN na dowolnych serwerach SHIR.
  2. Umieść odpowiedni certyfikat dla bazy danych PostgreSQL w folderze C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt na serwerach SHIR. W tym miejscu sterownik ODBC szuka > certyfikatu SSL, aby sprawdzić, kiedy nawiązuje połączenie z bazą danych.
  3. W połączeniu z fabryką danych użyj połączenia typu ODBC z parametry połączenia wskazującą nazwę DSN utworzoną na serwerach SHIR.

Przykład:

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

Przykład: przechowywanie hasła w usłudze 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"
        }
    }
}

Właściwości zestawu danych

Pełna lista sekcji i właściwości dostępnych do definiowania zestawów danych znajduje się w artykule dotyczącym zestawów danych. Ta sekcja zawiera listę właściwości obsługiwanych przez zestaw danych PostgreSQL.

Aby skopiować dane z bazy danych PostgreSQL, obsługiwane są następujące właściwości:

Właściwości Opis Wymagania
type Właściwość type zestawu danych musi być ustawiona na: PostgreSqlV2Table Tak
schema Nazwa schematu. Nie (jeśli określono "zapytanie" w źródle działania)
table Nazwa tabeli. Nie (jeśli określono "zapytanie" w źródle działania)

Przykład

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

Jeśli używasz RelationalTable wpisanego zestawu danych, nadal jest on obsługiwany w miarę działania, chociaż zaleca się użycie nowego zestawu danych w przyszłości.

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 artykuł Pipelines (Potoki ). Ta sekcja zawiera listę właściwości obsługiwanych przez źródło postgreSQL.

PostgreSQL jako źródło

Aby skopiować dane z bazy danych PostgreSQL, w sekcji źródła działania kopiowania są obsługiwane następujące właściwości:

Właściwości Opis Wymagania
type Właściwość type źródła działania kopiowania musi być ustawiona na: PostgreSqlV2Source Tak
zapytanie Użyj niestandardowego zapytania SQL, aby odczytać dane. Na przykład: "query": "SELECT * FROM \"MySchema\".\"MyTable\"". Nie (jeśli określono "tableName" w zestawie danych)

Uwaga

W nazwach schematów i tabel uwzględniana jest wielkość liter. Umieszczaj je w "" cudzysłowie (cudzysłowy) w zapytaniu.

Przykład:

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

Jeśli używasz RelationalSource wpisanego źródła, nadal jest obsługiwana w taki sposób, jak jest, podczas gdy sugerowane jest użycie nowego źródła w przyszłości.

Mapowanie typów danych dla bazy danych PostgreSQL

Podczas kopiowania danych z bazy danych PostgreSQL następujące mapowania są używane z typów danych PostgreSQL do tymczasowych typów danych używanych wewnętrznie przez usługę. Zobacz Mapowania schematu i typu danych, aby dowiedzieć się, jak działanie kopiowania mapuje schemat źródłowy i typ danych na ujście.

Typ danych PostgreSql Typ danych usługi tymczasowej Typ danych usługi tymczasowej dla bazy danych PostgreSQL (starsza wersja)
SmallInt Int16 Int16
Integer Int32 Int32
BigInt Int64 Int64
Decimal (Precyzja <= 28) Decimal Decimal
Decimal (Precyzja > 28) Nieobsługiwane 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

Właściwości działania wyszukiwania

Aby dowiedzieć się więcej o właściwościach, sprawdź działanie Wyszukiwania.

Uaktualnianie połączonej usługi PostgreSQL

Poniżej przedstawiono kroki ułatwiające uaktualnienie połączonej usługi PostgreSQL:

  1. Utwórz nową połączoną usługę PostgreSQL i skonfiguruj ją, odwołując się do właściwości połączonej usługi.

  2. Mapowanie typu danych dla najnowszej połączonej usługi PostgreSQL różni się od tej dla starszej wersji. Aby poznać najnowsze mapowanie typów danych, zobacz Mapowanie typów danych dla bazy danych PostgreSQL.

Różnice między bazami danych PostgreSQL i PostgreSQL (starsza wersja)

W poniższej tabeli przedstawiono różnice mapowania typów danych między bazami danych PostgreSQL i PostgreSQL (starsza wersja).

Typ danych PostgreSQL Typ danych usługi tymczasowej dla bazy danych PostgreSQL Typ danych usługi tymczasowej dla bazy danych PostgreSQL (starsza wersja)
Money Dziesiętne String
Sygnatura czasowa ze strefą czasową DateTime String
Czas ze strefą czasową DateTimeOffset String
Interwał przedział_czasu String
BigDecimal Nieobsługiwane. Alternatywnie możesz użyć to_char() funkcji, aby przekonwertować bigdecimal na ciąg. String

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