PostgreSQL-Übertragung planen

Mit dem BigQuery Data Transfer Service für den PostgreSQL-Connector können Nutzer On-Demand- und wiederkehrende Datenübertragungsjobs erstellen, um Daten aus ihrer PostgreSQL-Instanz in BigQuery zu übertragen. Der Connector unterstützt PostgreSQL-Instanzen, die in Ihrer lokalen Umgebung, in Cloud SQL sowie bei anderen öffentlichen Cloud-Anbietern wie Amazon Web Services (AWS) und Microsoft Azure gehostet werden.

Beschränkungen

PostgreSQL-Datenübertragungen unterliegen den folgenden Einschränkungen:

  • Die maximale Anzahl gleichzeitiger Übertragungen zu einer einzelnen PostgreSQL-Datenbank wird durch die maximale Anzahl gleichzeitiger Verbindungen bestimmt, die von der PostgreSQL-Datenbank unterstützt werden. Die Anzahl der gleichzeitigen Übertragungsjobs sollte auf einen Wert begrenzt werden, der kleiner als die maximale Anzahl gleichzeitiger Verbindungen ist, die von der PostgreSQL-Datenbank unterstützt wird.
  • In PostgreSQL werden einige Datentypen dem Stringtyp in BigQuery zugeordnet, um Datenverluste zu vermeiden. In PostgreSQL definierte numerische Typen ohne definierte Genauigkeit und Skalierung werden beispielsweise dem Stringtyp in BigQuery zugeordnet.

Hinweise

Erforderliche Rollen

Wenn Sie Benachrichtigungen zur Übertragungsausführung für Pub/Sub einrichten möchten, benötigen Sie die IAM-Berechtigung (Identity and Access Management) pubsub.topics.setIamPolicy. Pub/Sub-Berechtigungen sind nicht erforderlich, wenn Sie nur E-Mail-Benachrichtigungen einrichten. Weitere Informationen finden Sie unter Ausführungsbenachrichtigungen im BigQuery Data Transfer Service.

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery Admin (roles/bigquery.admin) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer PostgreSQL-Datenübertragung benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen einer PostgreSQL-Datenübertragung erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um eine PostgreSQL-Datenübertragung zu erstellen:

  • bigquery.transfers.update
  • bigquery.datasets.get

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Netzwerkverbindungen

Wenn für die PostgreSQL-Datenbankverbindung keine öffentliche IP-Adresse verfügbar ist, müssen Sie einen Netzwerkanhang einrichten.

Eine ausführliche Anleitung zur erforderlichen Netzwerkeinrichtung findest du in den folgenden Dokumenten:

PostgreSQL-Datenübertragung einrichten

Wählen Sie eine der folgenden Optionen aus:

Konsole

  1. Rufen Sie die Seite Datenübertragungen auf.

    Zu „Datenübertragungen”

  2. Klicken Sie auf Übertragung erstellen.

  3. Wählen Sie im Abschnitt Source type (Quelltyp) für Source (Quelle) die Option PostgreSQL aus.

  4. Geben Sie im Abschnitt Konfigurationsname für Übertragung für Anzeigename einen Namen für die Übertragung ein. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.

  5. Führen Sie im Abschnitt Zeitplanoptionen folgende Schritte aus:

    • Wählen Sie eine Wiederholungshäufigkeit aus. Wenn Sie Stunden, Tage (Standardeinstellung), Wochen oder Monate auswählen, müssen Sie auch eine Häufigkeit angeben. Sie können auch die Option Benutzerdefiniert auswählen, um eine genauere Wiederholungshäufigkeit festzulegen. Wenn Sie die Option On-Demand auswählen, wird diese Datenübertragung nur ausgeführt, wenn Sie die Übertragung manuell auslösen.
    • Wählen Sie gegebenenfalls Jetzt starten oder Zum festgelegten Zeitpunkt starten aus und geben Sie ein Startdatum und eine Laufzeit an.
  6. Wählen Sie im Abschnitt Zieleinstellungen für Dataset das Dataset aus, das Sie zum Speichern Ihrer Daten erstellt haben. Sie können auch auf Neues Dataset erstellen klicken und ein Dataset als Ziel-Dataset erstellen.

  7. Führen Sie im Abschnitt Details zur Datenquelle folgende Schritte aus:

    • Wählen Sie unter Netzwerkanhang einen vorhandenen Netzwerkanhang aus oder klicken Sie auf Netzwerkanhang erstellen. Weitere Informationen finden Sie im Abschnitt Netzwerkverbindungen dieses Dokuments.
    • Geben Sie unter Host den Hostnamen oder die IP-Adresse des PostgreSQL-Datenbankservers ein.
    • Geben Sie unter Portnummer die Portnummer für den PostgreSQL-Datenbankserver ein.
    • Geben Sie unter Datenbankname den Namen der PostgreSQL-Datenbank ein.
    • Geben Sie unter Nutzername den Nutzernamen des PostgreSQL-Nutzers ein, der die PostgreSQL-Datenbankverbindung initiiert.
    • Geben Sie unter Passwort das Passwort des PostgreSQL-Nutzers ein, der die PostgreSQL-Datenbankverbindung initiiert.
    • Führen Sie für zu übertragende PostgreSQL-Objekte einen der folgenden Schritte aus:

      • Klicken Sie auf Durchsuchen, um die für die Übertragung erforderlichen PostgreSQL-Tabellen auszuwählen, und dann auf Auswählen.
      • Geben Sie die Namen der Tabellen in den zu übertragenden PostgreSQL-Objekten manuell ein.

    Details zur Datenquelle auf der Seite „Übertragung erstellen“

  8. Optional: Geben Sie im Menü Dienstkonto ein benutzerdefiniertes Dienstkonto an, um die Übertragung zu autorisieren. Prüfen Sie, ob das verwendete Dienstkonto alle erforderlichen Rollen und Berechtigungen hat. Weitere Informationen finden Sie unter Übertragungs-Inhaber als Dienstkonto.

  9. Optional: Gehen Sie im Abschnitt Benachrichtigungsoptionen so vor:

    • Klicken Sie zum Aktivieren von E-Mail-Benachrichtigungen auf die Ein/Aus-Schaltfläche E-Mail-Benachrichtigungen. Wenn Sie diese Option aktivieren, erhält der Übertragungsadministrator eine E-Mail-Benachrichtigung, wenn ein Übertragungsvorgang fehlschlägt.
    • Wenn Sie Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung konfigurieren möchten, klicken Sie auf die Ein/Aus-Schaltfläche Pub/Sub-Benachrichtigungen. Sie können den Namen für das Thema auswählen oder auf Thema erstellen klicken, um eines zu erstellen.
  10. Klicken Sie auf Speichern.

bq

Geben Sie den Befehl bq mk ein und geben Sie das Flag --transfer_config für die Übertragungserstellung an.

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

Ersetzen Sie Folgendes:

  • PROJECT_ID (optional): Ihre Google Cloud -Projekt-ID. Wenn das Flag --project_id nicht bereitgestellt wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet.
  • DATA_SOURCE: die Datenquelle, also postgresql.
  • DISPLAY_NAME: Der Anzeigename für die Datenübertragungskonfiguration. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.
  • DATASET: Das Ziel-Dataset für die Datenübertragungskonfiguration.
  • PARAMETERS: die Parameter für die erstellte Übertragungskonfiguration im JSON-Format. Beispiel: --params='{"param":"param_value"}'. Im Folgenden finden Sie die Parameter für eine PostgreSQL-Übertragung:

    • networkAttachment (optional): Name des Netzwerkanhangs, der eine Verbindung zur PostgreSQL-Datenbank herstellen soll.
    • connector.database: der Name der PostgreSQL-Datenbank.
    • connector.endpoint.host: Hostname oder IP-Adresse der Datenbank.
    • connector.endpoint.port: die Portnummer der Datenbank.
    • connector.authentication.username: Der Nutzername des Datenbanknutzers.
    • connector.authentication.password: Das Passwort des Datenbanknutzers.
    • assets: Eine Liste der Namen der PostgreSQL-Tabellen, die im Rahmen der Übertragung aus der PostgreSQL-Datenbank kopiert werden sollen.

Mit dem folgenden Befehl wird beispielsweise eine PostgreSQL-Übertragung namens My Transfer erstellt:

bq mk \
    --transfer_config \
    --target_dataset=mydataset \
    --data_source=postgresql \
    --display_name='My Transfer' \
    --params='{"assets":["DB1/PUBLIC/DEPARTMENT","DB1/PUBLIC/EMPLOYEES"], \
        "connector.authentication.username": "User1", \
        "connector.authentication.password":"ABC12345", \
        "connector.database":"DB1", \
        "Connector.endpoint.host":"192.168.0.1", \
        "Connector.endpoint.port":"1520"}' 

API

Verwenden Sie die Methode projects.locations.transferConfigs.create und geben Sie eine Instanz der Ressource TransferConfig an.

Datentypzuordnung

In der folgenden Tabelle werden PostgreSQL-Datentypen den entsprechenden BigQuery-Datentypen zugeordnet.

PostgreSQL-Datentyp BigQuery-Datentyp
bigint INTEGER
bigserial INTEGER
bit(n) STRING
bit varying(n) STRING
boolean BOOLEAN
bytea BYTES
character STRING
character varying STRING
double precision FLOAT
integer INTEGER
numeric(precision, scale)/decimal(precision, scale) NUMERIC
real FLOAT
smallint INTEGER
smallserial INTEGER
serial INTEGER
text INTEGER
date DATE
time [ (p) ] [ without timezone ] TIMESTAMP
time [ (p) ] with time zone TIMESTAMP
timestamp [ (p) ] [ without timezone ] TIMESTAMP
timestamp [ (p) ] with time zone TIMESPAMP
xml STRING
tsquery STRING
tsvector STRING
uuid STRING
box STRING
cidr STRING
circle STRING
inet STRING
interval STRING
json STRING
jsonb STRING
line STRING
lseg STRING
macaddr STRING
macaddr8 STRING
money STRING
path STRING
point STRING
polygon STRING

Fehlerbehebung

Unterstützung bei Problemen mit der Einrichtung von Datenübertragungen finden Sie unter PostgreSQL-Übertragungsprobleme.

Nächste Schritte