Udostępnij przez


Kopiowanie danych z bazy danych PostgreSQL w wersji 2 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

Łącznik PostgreSQL V1 jest na etapie usuwania. Zaleca się uaktualnienie łącznika PostgreSQL z wersji 1 do wersji 2.

Obsługiwane możliwości

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

Obsługiwane możliwości środowisko IR
Kopiowanie (źródło/-) (1) (2)
Działanie wyszukiwania (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 12 lub nowszej.

Wymagania wstępne

Jeśli magazyn danych znajduje się wewnątrz sieci lokalnej, wirtualnej sieci platformy Azure lub Amazon Virtual Private Cloud, musisz skonfigurować samodzielnie hostowane ś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ć zarządzanego środowiska uruchomieniowego integracji z wirtualną siecią w usłudze Azure Data Factory, aby uzyskać dostęp do sieci lokalnej bez instalowania i konfigurowania samodzielnie hostowanego środowiska uruchomieniowego integracji.

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 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 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 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łasność Opis Wymagane
typ 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.
baza danych Baza danych PostgreSQL, z którą należy nawiązać połączenie. 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
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: Przerwij próbę połączenia, jeśli serwer nie obsługuje 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.
typ uwierzytelniania 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:
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.
certyfikat SSL Lokalizacja certyfikatu klienta do wysłania na serwer. Nie.
klucz SSL Lokalizacja klucza dla certyfikatu klienta, który ma być wysłany do serwera. Nie.
hasło SSL Hasło klucza certyfikatu klienta. 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.
parametry logowania Po włączeniu wartości parametrów są rejestrowane po wykonaniu poleceń. Nie.
strefa czasowa Pobiera lub ustawia strefę czasową sesji. Nie.
kodowanie 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 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 parametrami połączenia wskazującymi 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łasność Opis Wymagane
typ Właściwość type zestawu danych musi być ustawiona na: PostgreSqlV2Table Tak
schemat Nazwa schematu. Nie (jeśli w źródle aktywności określono "zapytanie")
tabela Nazwa tabeli. Nie (jeśli w źródle aktywności określono "zapytanie")

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 bez zmian, jednak zaleca się korzystanie z 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ń, odnieś się do artykułu Pipelines. Ta sekcja zawiera listę właściwości obsługiwanych przez źródło postgreSQL.

PostgreSQL jako źródło

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

Własność Opis Wymagane
typ Właściwość typu źródła aktywności kopiowania musi być ustawiona na: PostgreSqlV2Source Tak
kwerenda 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)
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.
Jeśli obie commandTimeout opcje i queryTimeout są skonfigurowane, queryTimeout pierwszeństwo ma.
Nie.

Uwaga

W nazwach schematów i tabel uwzględniana jest wielkość liter. Umieść je w „cudzysłowie” 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\"",
                "queryTimeout": "00:10:00"
            },
            "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 dla bazy danych PostgreSQL w wersji 2 Typ danych usługi tymczasowej dla bazy danych PostgreSQL W wersji 1
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
NumericArray String String
DateArray String String
Range String String
Bpchar String String

Właściwości działania wyszukiwania

Aby dowiedzieć się szczegółów dotyczących właściwości, sprawdź aktywność Wyszukiwania.

Uaktualnianie łącznika PostgreSQL

Poniżej przedstawiono kroki ułatwiające uaktualnienie łącznika 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 łącznika PostgreSQL V2 różni się od tego dla wersji 1. Aby poznać najnowsze mapowanie typów danych, zobacz Mapowanie typów danych dla bazy danych PostgreSQL.

Różnice między bazą danych PostgreSQL w wersji 2 i V1

W poniższej tabeli przedstawiono różnice mapowania typów danych między programem PostgreSQL V2 i V1.

Typ danych PostgreSQL Typ danych usługi tymczasowej dla bazy danych PostgreSQL w wersji 2 Typ danych usługi tymczasowej dla bazy danych PostgreSQL W wersji 1
Pieniądze Dziesiętne Sznurek
Sygnatura czasowa ze strefą czasową Data i Czas Sznurek
Czas ze strefą czasową PrzesunięcieDatyICzasu Sznurek
Interwał przedział_czasu Sznurek
BigDecimal Nie jest obsługiwane. Alternatywnie możesz użyć funkcji to_char(), aby przekonwertować BigDecimal na ciąg. Sznurek

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