PostgreSQL-Daten in BigQuery laden

Mit dem BigQuery Data Transfer Service-Connector für PostgreSQL können Sie Daten aus PostgreSQL in BigQuery laden. Der Connector unterstützt PostgreSQL-Instanzen, die in Ihrer lokalen Umgebung, in Cloud SQL und bei anderen öffentlichen Cloud-Anbietern wie Amazon Web Services (AWS) und Microsoft Azure gehostet werden. Mit dem BigQuery Data Transfer Service können Sie wiederkehrende Übertragungsjobs planen, mit denen Ihre neuesten Daten aus PostgreSQL in BigQuery eingefügt werden.

Beschränkungen

Für PostgreSQL-Datenübertragungen gelten die 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 werden.
  • Für eine einzelne Übertragungskonfiguration kann jeweils nur eine Datenübertragung ausgeführt werden. Wenn eine zweite Datenübertragung geplant ist, bevor die erste abgeschlossen ist, wird nur die erste Datenübertragung abgeschlossen. Alle anderen Datenübertragungen, die sich mit der ersten überschneiden, werden übersprungen.

    Um übersprungene Übertragungen innerhalb einer einzelnen Übertragungskonfiguration zu vermeiden, empfehlen wir, die Zeit zwischen großen Datenübertragungen durch Konfigurieren der Wiederholungshäufigkeit zu verlängern.

  • Während einer Datenübertragung werden mit dem PostgreSQL-Connector indexierte und partitionierte Schlüsselspalten identifiziert, um Ihre Daten in parallelen Batches zu übertragen. Aus diesem Grund empfehlen wir, Primärschlüsselspalten anzugeben oder indexierte Spalten in Ihrer Tabelle zu verwenden, um die Leistung zu verbessern und die Fehlerrate bei Ihren Datenübertragungen zu reduzieren. Berücksichtige Folgendes:

    • Wenn Sie Index- oder Primärschlüsselbeschränkungen haben, werden nur die folgenden Spaltentypen für das Erstellen paralleler Batches unterstützt:
      • INTEGER
      • TINYINT
      • SMALLINT
      • FLOAT
      • REAL
      • DOUBLE
      • NUMERIC
      • BIGINT
      • DECIMAL
      • DATE
    • PostgreSQL-Datenübertragungen,bei denen keine Primärschlüssel oder indexierten Spalten verwendet werden,können nicht mehr als 2.000.000 Datensätze pro Tabelle unterstützen.

Einschränkungen bei inkrementellen Übertragungen

Inkrementelle PostgreSQL-Übertragungen unterliegen den folgenden Einschränkungen:

  • Sie können nur TIMESTAMP Spalten als Wasserzeichenspalten auswählen.
  • Die inkrementelle Aufnahme wird nur für Assets mit gültigen Wasserzeichenspalten unterstützt.
  • Die Werte in einer Wasserzeichenspalte müssen monoton ansteigen.
  • Bei inkrementellen Übertragungen können keine Löschvorgänge in der Quelltabelle synchronisiert werden.
  • Eine einzelne Übertragungskonfiguration kann nur die inkrementelle oder die vollständige Aufnahme unterstützen.
  • Sie können Objekte in der Liste asset nach dem ersten inkrementellen Import nicht mehr aktualisieren.
  • Sie können den Schreibmodus in einer Übertragungskonfiguration nach dem ersten inkrementellen Erfassungslauf nicht mehr ändern.
  • Nach dem ersten inkrementellen Import können Sie die Spalte für das Wasserzeichen oder den Primärschlüssel nicht mehr ändern.
  • Die BigQuery-Zieltabelle wird mit dem angegebenen Primärschlüssel geclustert und unterliegt den Beschränkungen für geclusterte Tabellen.
  • Wenn Sie eine vorhandene Übertragungskonfiguration zum ersten Mal auf den inkrementellen Erfassungsmodus umstellen, werden bei der ersten Datenübertragung nach dieser Umstellung alle verfügbaren Daten aus Ihrer Datenquelle übertragen. Bei allen nachfolgenden inkrementellen Datenübertragungen werden nur die neuen und aktualisierten Zeilen aus Ihrer Datenquelle übertragen.
  • Wir empfehlen, Indexe für die Wasserzeichenspalte zu erstellen. Bei diesem Connector werden Wasserzeichenspalten für Filter bei inkrementellen Übertragungen verwendet. Das Indexieren dieser Spalten kann die Leistung verbessern.

Optionen für die Datenaufnahme

In den folgenden Abschnitten finden Sie Informationen zu den Optionen für die Datenaufnahme, wenn Sie einen PostgreSQL-Datenübertrag einrichten.

TLS-Konfiguration

Der PostgreSQL-Connector unterstützt die Konfiguration für die Sicherheit auf Transportebene (Transport Layer Security, TLS), um Ihre Datenübertragungen nach BigQuery zu verschlüsseln. Der PostgreSQL-Connector unterstützt die folgenden TLS-Konfigurationen:

  • Der Modus Daten verschlüsseln und Zertifizierungsstelle und Hostname bestätigen. In diesem Modus wird eine vollständige Validierung des Servers mit TLS über das TCPS-Protokoll durchgeführt. Sie verschlüsselt alle übertragenen Daten und prüft, ob das Zertifikat des Datenbankservers von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. In diesem Modus wird auch geprüft, ob der Hostname, zu dem Sie eine Verbindung herstellen, genau mit dem allgemeinen Namen (Common Name, CN) oder einem alternativen Antragstellernamen (Subject Alternative Name, SAN) im Zertifikat des Servers übereinstimmt. In diesem Modus wird verhindert, dass Angreifer ein gültiges Zertifikat für eine andere Domain verwenden, um sich als Ihr Datenbankserver auszugeben.

    Wenn Ihr Hostname nicht mit dem CN oder SAN des Zertifikats übereinstimmt, schlägt die Verbindung fehl. Sie müssen eine DNS-Auflösung konfigurieren, die dem Zertifikat entspricht, oder einen anderen Sicherheitsmodus verwenden. Verwenden Sie diesen Modus, um PITM-Angriffe (Person-in-the-Middle) zu verhindern.

  • Der Modus Daten verschlüsseln und nur Zertifizierungsstelle bestätigen. In diesem Modus werden alle Daten mit TLS über das TCPS-Protokoll verschlüsselt und es wird geprüft, ob das Zertifikat des Servers von einer Zertifizierungsstelle signiert ist, der der Client vertraut. In diesem Modus wird der Hostname des Servers jedoch nicht überprüft. In diesem Modus wird eine Verbindung hergestellt, solange das Zertifikat gültig ist und von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde. Dabei spielt es keine Rolle, ob der Hostname im Zertifikat mit dem Hostnamen übereinstimmt, zu dem Sie eine Verbindung herstellen.

    Verwenden Sie diesen Modus, wenn Sie sicherstellen möchten, dass Sie eine Verbindung zu einem Server herstellen, dessen Zertifikat von einer vertrauenswürdigen Zertifizierungsstelle signiert ist, der Hostname jedoch nicht überprüft werden kann oder Sie keine Kontrolle über die Hostname-Konfiguration haben.

  • Der Modus Nur Verschlüsselung. In diesem Modus werden alle Daten verschlüsselt, die zwischen dem Client und dem Server übertragen werden. Es wird keine Zertifikats- oder Hostname-Validierung durchgeführt.

    Dieser Modus bietet ein gewisses Maß an Sicherheit, da Daten während der Übertragung geschützt werden. Er kann jedoch anfällig für PITM-Angriffe sein.

    Verwenden Sie diesen Modus, wenn Sie sicherstellen müssen, dass alle Daten verschlüsselt sind, die Identität des Servers aber nicht überprüfen können oder möchten. Wir empfehlen, diesen Modus zu verwenden, wenn Sie mit privaten VPCs arbeiten.

  • Der Modus Keine Verschlüsselung oder Bestätigung. In diesem Modus werden keine Daten verschlüsselt und es werden keine Zertifikats- oder Hostnamenprüfungen durchgeführt. Alle Daten werden als Nur-Text gesendet.

    Wir empfehlen, diesen Modus nicht in einer Umgebung zu verwenden, in der vertrauliche Daten verarbeitet werden. Wir empfehlen, diesen Modus nur zu Testzwecken in einem isolierten Netzwerk zu verwenden, in dem Sicherheit kein Problem darstellt.

Vertrauenswürdiges Serverzertifikat (PEM)

Wenn Sie den Modus Daten verschlüsseln und CA und Hostname bestätigen oder Daten verschlüsseln und CA bestätigen verwenden, können Sie auch ein oder mehrere PEM-codierte Zertifikate angeben. Diese Zertifikate sind in einigen Szenarien erforderlich, in denen der BigQuery Data Transfer Service die Identität Ihres Datenbankservers während der TLS-Verbindung bestätigen muss:

  • Wenn Sie ein Zertifikat verwenden, das von einer privaten Zertifizierungsstelle in Ihrer Organisation signiert wurde, oder ein selbst signiertes Zertifikat, müssen Sie die vollständige Zertifikatskette oder das einzelne selbst signierte Zertifikat angeben. Dies ist für Zertifikate erforderlich, die von internen Zertifizierungsstellen verwalteter Cloud-Anbieterdienste wie Amazon Relational Database Service (RDS) ausgestellt werden.
  • Wenn das Zertifikat Ihres Datenbankservers von einer öffentlichen Zertifizierungsstelle signiert wurde (z. B. Let's Encrypt, DigiCert oder GlobalSign), müssen Sie kein Zertifikat angeben. Die Stammzertifikate für diese öffentlichen Zertifizierungsstellen sind vorinstalliert und werden vom BigQuery Data Transfer Service als vertrauenswürdig eingestuft.

Sie können PEM-codierte Zertifikate im Feld Trusted PEM Certificate (Vertrauenswürdiges PEM-Zertifikat) in der Übertragungskonfiguration angeben. Dabei gelten die folgenden Anforderungen:

  • Das Zertifikat muss eine gültige PEM-codierte Zertifikatskette sein.
  • Das Zertifikat muss vollständig korrekt sein. Fehlende Zertifikate in der Kette oder falsche Inhalte führen dazu, dass die TLS-Verbindung fehlschlägt.
  • Für ein einzelnes Zertifikat können Sie ein einzelnes, selbst signiertes Zertifikat vom Datenbankserver bereitstellen.
  • Für eine vollständige Zertifikatskette, die von einer privaten Zertifizierungsstelle ausgestellt wurde, müssen Sie die vollständige Vertrauenskette angeben. Dazu gehören das Zertifikat des Datenbankservers sowie alle Zwischen- und Stammzertifikate der Zertifizierungsstelle.

Vollständige oder inkrementelle Übertragungen

Sie können angeben, wie Daten in BigQuery geladen werden, indem Sie beim Einrichten einer PostgreSQL-Übertragung in der Übertragungskonfiguration die Schreibeinstellung Vollständig oder Inkrementell auswählen. Inkrementelle Übertragungen werden in der Vorschau unterstützt.

Sie können eine vollständige Datenübertragung konfigurieren, um alle Daten aus Ihren PostgreSQL-Datasets bei jeder Datenübertragung zu übertragen.

Alternativ können Sie eine inkrementelle Datenübertragung (Vorabversion) konfigurieren, um nur Daten zu übertragen, die sich seit der letzten Datenübertragung geändert haben. So muss nicht bei jeder Datenübertragung das gesamte Dataset geladen werden. Wenn Sie eine inkrementelle Datenübertragung konfiguriert haben, müssen Sie entweder den Schreibmodus append oder upsert angeben, um festzulegen, wie Daten während einer inkrementellen Datenübertragung in BigQuery geschrieben werden. In den folgenden Abschnitten werden die verfügbaren Schreibmodi beschrieben.

Anhängemodus

Im Anhängen-Schreibmodus werden nur neue Zeilen in die Zieltabelle eingefügt. Bei dieser Option werden übertragene Daten strikt angehängt, ohne dass nach vorhandenen Datensätzen gesucht wird. In der Zieltabelle kann es daher zu Datenduplizierungen kommen.

Wenn Sie den Modus „Append“ auswählen, müssen Sie eine Watermark-Spalte auswählen. Für den PostgreSQL-Connector ist eine Wasserzeichenspalte erforderlich, um Änderungen in der Quelltabelle zu erfassen.

Für PostgreSQL-Übertragungen empfehlen wir, eine Spalte auszuwählen, die nur beim Erstellen des Datensatzes aktualisiert wird und sich bei nachfolgenden Aktualisierungen nicht ändert, z. B. die Spalte CREATED_AT.

Upsert-Schreibmodus

Im Upsert-Schreibmodus wird entweder eine Zeile aktualisiert oder eine neue Zeile in die Zieltabelle eingefügt, indem nach einem Primärschlüssel gesucht wird. Sie können einen Primärschlüssel angeben, damit der PostgreSQL-Connector ermitteln kann, welche Änderungen erforderlich sind, um die Zieltabelle mit der Quelltabelle auf dem neuesten Stand zu halten. Wenn der angegebene Primärschlüssel während einer Datenübertragung in der BigQuery-Zieltabelle vorhanden ist, aktualisiert der PostgreSQL-Connector diese Zeile mit neuen Daten aus der Quelltabelle. Wenn bei einer Datenübertragung kein Primärschlüssel vorhanden ist, fügt der PostgreSQL-Connector eine neue Zeile ein.

Wenn Sie den Upsert-Modus auswählen, müssen Sie eine Watermark-Spalte und einen Primärschlüssel auswählen:

  • Für den PostgreSQL-Connector ist eine Watermark-Spalte erforderlich, um Änderungen in der Quelltabelle zu verfolgen.

    Wählen Sie eine Wasserzeichenspalte aus, die jedes Mal aktualisiert wird, wenn eine Zeile geändert wird. Wir empfehlen Spalten, die der Spalte UPDATED_AT oder LAST_MODIFIED ähneln.

  • Der Primärschlüssel kann aus einer oder mehreren Spalten in Ihrer Tabelle bestehen, die der PostgreSQL-Connector benötigt, um zu ermitteln, ob eine Zeile eingefügt oder aktualisiert werden muss.

    Wählen Sie Spalten mit Nicht-Null-Werten aus, die in allen Zeilen der Tabelle eindeutig sind. Wir empfehlen Spalten mit systemgenerierten Kennungen, eindeutigen Referenzcodes (z. B. automatisch inkrementierenden IDs) oder unveränderlichen zeitbasierten Sequenz-IDs.

    Um potenziellen Datenverlust oder Datenbeschädigung zu vermeiden, müssen die ausgewählten Primärschlüsselspalten eindeutige Werte enthalten. Wenn Sie Zweifel an der Eindeutigkeit der ausgewählten Primärschlüsselspalte haben, empfehlen wir, stattdessen den Schreibmodus „Append“ zu verwenden.

Inkrementelles Aufnahmeverhalten

Wenn Sie Änderungen am Tabellenschema in Ihrer Datenquelle vornehmen, werden inkrementelle Datenübertragungen aus diesen Tabellen in BigQuery auf folgende Weise berücksichtigt:

Änderungen an der Datenquelle Inkrementelles Aufnahmeverhalten
Neue Spalte hinzufügen Der BigQuery-Zieltabelle wird eine neue Spalte hinzugefügt. Alle vorherigen Datensätze für diese Spalte haben Nullwerte.
Spalte löschen Die gelöschte Spalte verbleibt in der BigQuery-Zieltabelle. Neue Einträge in dieser gelöschten Spalte werden mit Nullwerten gefüllt.
Datentyp einer Spalte ändern Der Connector unterstützt nur Datentypkonvertierungen, die von der ALTER COLUMN-DDL-Anweisung unterstützt werden. Bei allen anderen Datentypkonvertierungen schlägt die Datenübertragung fehl.

Wenn Probleme auftreten, empfehlen wir, eine neue Übertragungskonfiguration zu erstellen.

Spalte umbenennen Die ursprüngliche Spalte bleibt in der BigQuery-Zieltabelle unverändert, während der Zieltabelle eine neue Spalte mit dem aktualisierten Namen hinzugefügt wird.

Hinweis

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-Administrator (roles/bigquery.admin) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer BigQuery Data Transfer Service-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 BigQuery Data Transfer Service-Datenübertragung erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um eine Datenübertragung für den BigQuery Data Transfer Service zu erstellen:

  • Berechtigungen für BigQuery Data Transfer Service:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • BigQuery-Berechtigungen:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

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

Weitere Informationen finden Sie unter Zugriff auf bigquery.admin gewähren.

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 finden Sie in den folgenden Dokumenten:

PostgreSQL-Datenübertragung einrichten

Sie können PostgreSQL-Daten in BigQuery einfügen, indem Sie eine Übertragungskonfiguration mit einer der folgenden Optionen einrichten:

Console

  1. Rufen Sie die Seite Datenübertragungen auf.

    Zu „Datenübertragungen”

  2. Klicken Sie auf Übertragung erstellen.

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

  4. 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 in diesem Dokument.
    • Geben Sie unter Host den Hostnamen oder die IP-Adresse des PostgreSQL-Datenbankservers ein.
    • Geben Sie als Portnummer die Portnummer für den PostgreSQL-Datenbankserver ein.
    • Geben Sie unter Datenbankname den Namen der PostgreSQL-Datenbank ein.
    • Geben Sie für Nutzername den Nutzernamen des PostgreSQL-Nutzers ein, der die PostgreSQL-Datenbankverbindung initiiert.
    • Geben Sie für Passwort das Passwort des PostgreSQL-Nutzers ein, der die PostgreSQL-Datenbankverbindung initiiert.
    • Wählen Sie für TLS-Modus eine Option aus dem Menü aus. Weitere Informationen zu TLS-Modi finden Sie unter TLS-Konfiguration.
    • Geben Sie für Trusted PEM Certificate (Zertifikat für vertrauenswürdigen PEM) das öffentliche Zertifikat der Zertifizierungsstelle ein, die das TLS-Zertifikat des Datenbankservers ausgestellt hat. Weitere Informationen finden Sie unter Zertifikat für vertrauenswürdigen Serverzertifikat (PEM).
    • Wählen Sie für Enable legacy mapping (Legacy-Zuordnung aktivieren) true (Standard) aus, um die Legacy-Datentypzuordnung zu verwenden. Wählen Sie false aus, um die aktualisierte Datentypzuordnung zu verwenden. Weitere Informationen zu den Aktualisierungen der Datentypzuordnung finden Sie unter 16. März 2027. Datenbankserver. Weitere Informationen finden Sie unter Zertifikat für vertrauenswürdigen Serverzertifikat (PEM).
    • Wählen Sie für Aufnahmetyp die Option Vollständig oder Inkrementell aus.
    • Klicken Sie unter PostgreSQL-Objekte zum Übertragen auf Durchsuchen.

      Wählen Sie alle Objekte aus, die an das BigQuery-Ziel-Dataset übertragen werden sollen. Sie können in dieses Feld auch manuell alle Objekte eingeben, die in die Datenübertragung einbezogen werden sollen.

      • Wenn Sie Append als inkrementellen Schreibmodus ausgewählt haben, müssen Sie eine Spalte als Watermark-Spalte auswählen.
      • Wenn Sie Upsert als inkrementellen Schreibmodus gewählt haben, müssen Sie eine Spalte als Watermark-Spalte und darauf eine oder mehrere Spalten als Primärschlüssel auswählen.
  5. Geben Sie im Abschnitt Konfigurationsname für Übertragung für Anzeigename einen Namen für die Übertragung ein. Der Name kann ein beliebiger Wert sein, anhand dessen Sie die Übertragung identifizieren können, falls Sie sie später ändern müssen.

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

    • Wählen Sie eine Wiederholungshäufigkeit aus. Wenn Sie die Option Stunden, Tage (Standard), 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 die Option Jetzt starten oder Zu festgelegter Zeit starten aus und geben Sie ein Startdatum und eine Laufzeit an.
  7. Wählen Sie im Abschnitt Zieleinstellungen für Dataset das Dataset aus, das Sie zum Speichern Ihrer Daten erstellt haben, oder klicken Sie auf Neues Dataset erstellen, um ein Dataset zu erstellen, das als Ziel-Dataset verwendet werden soll.

  8. 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.
    • Klicken Sie auf die Ein/Aus-Schaltfläche Pub/Sub-Benachrichtigungen, um Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung zu konfigurieren. Sie können den Namen für das Thema auswählen oder auf Thema erstellen klicken, um eines zu erstellen.
  9. 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 Cloud de Confiance Projekt-ID. Wenn das Flag --project_id nicht bereitgestellt wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet.
  • DATA_SOURCE: Die Datenquelle, die postgresql ist.
  • 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:

    • connector.networkAttachment (optional): Name des Netzwerkanhangs, der eine Verbindung zur PostgreSQL-Datenbank herstellen soll.
    • connector.database: Der Name der PostgreSQL-Datenbank.
    • connector.endpoint.host: der Hostname oder die 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.
    • connector.tls.mode: Geben Sie eine TLS-Konfiguration an, die für diese Übertragung verwendet werden soll:
      • ENCRYPT_VERIFY_CA_AND_HOST zum Verschlüsseln von Daten und zum Überprüfen von Zertifizierungsstelle und Hostname
      • ENCRYPT_VERIFY_CA zum Verschlüsseln von Daten und zum Überprüfen der Zertifizierungsstelle
      • ENCRYPT_VERIFY_NONE nur für die Datenverschlüsselung
      • DISABLE für keine Verschlüsselung oder Bestätigung
    • connector.tls.trustedServerCertificate: (optional) Geben Sie ein oder mehrere PEM-codierte Zertifikate an. Nur erforderlich, wenn connector.tls.mode ENCRYPT_VERIFY_CA_AND_HOST oder ENCRYPT_VERIFY_CA ist.
    • ingestionType: Geben Sie entweder FULL oder INCREMENTAL an. Inkrementelle Übertragungen werden in der Vorschau unterstützt. Weitere Informationen finden Sie unter Vollständige oder inkrementelle Übertragungen.
    • writeMode: Geben Sie entweder WRITE_MODE_APPEND oder WRITE_MODE_UPSERT an.
    • watermarkColumns: Spalten in Ihrer Tabelle als Wasserzeichenspalten angeben. Dieses Feld ist für inkrementelle Übertragungen erforderlich.
    • primaryKeys: Spalten in Ihrer Tabelle als Primärschlüssel angeben. Dieses Feld ist für inkrementelle Übertragungen erforderlich.
    • assets: Eine Liste der Namen der PostgreSQL-Tabellen, die im Rahmen der Übertragung aus der PostgreSQL-Datenbank übertragen werden sollen.

Mit dem folgenden Befehl wird beispielsweise ein PostgreSQL-Transfer 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":5432,
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']],
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'

Wenn Sie bei einer inkrementellen Übertragung mehrere Assets angeben, entsprechen die Werte der Felder watermarkColumns und primaryKeys der Position der Werte im Feld assets. Im folgenden Beispiel entspricht dep_id der Tabelle DB1/USER1/DEPARTMENT, während report_by und report_title der Tabelle DB1/USER1/EMPLOYEES entsprechen.

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
  

API

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

Wenn Sie die Übertragungskonfiguration speichern, wird vom PostgreSQL-Connector automatisch ein Übertragungslauf gemäß Ihrer Zeitplanoption ausgelöst. Bei jeder Übertragung werden mit dem PostgreSQL-Connector alle verfügbaren Daten aus PostgreSQL in BigQuery übertragen.

Wenn Sie eine Datenübertragung manuell außerhalb des regulären Zeitplans ausführen möchten, können Sie einen Backfill-Vorgang starten.

Datentypzuordnung

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

PostgreSQL-Datentyp BigQuery-Datentyp Aktualisierter BigQuery-Datentyp
array STRING
bigint INTEGER
bigserial INTEGER
bit(n) STRING
bit varying(n) STRING
boolean BOOLEAN
box STRING
bytea BYTES
character STRING
character varying STRING
cidr STRING
circle STRING
circularstring STRING
compoundcurve STRING
curvepolygon STRING
date DATE
double precision FLOAT
enum STRING
geometrycollection STRING
inet STRING
integer INTEGER
interval STRING
json STRING JSON
jsonb STRING JSON
line STRING
linestring STRING
lseg STRING
macaddr STRING
macaddr8 STRING
money STRING
multicurve STRING
multilinestring STRING
multipoint STRING
multipolygon STRING
multisurface STRING
numeric(precision, scale)/decimal(precision, scale) NUMERIC
path STRING
point STRING
polygon STRING
polyhedralsurface STRING
range STRING
real FLOAT
serial INTEGER
smallint INTEGER
smallserial INTEGER
text STRING
time [ (p) ] [ without timezone ] TIMESTAMP
time [ (p) ] with time zone TIMESTAMP
tin STRING
timestamp [ (p) ] [ without timezone ] TIMESTAMP DATETIME
timestamp [ (p) ] with time zone TIMESTAMP
triangle STRING
tsquery STRING
tsvector STRING
uuid STRING
xml STRING

Fehlerbehebung

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

Preise

Preisinformationen zu PostgreSQL-Übertragungen finden Sie unter Data Transfer Service – Preise.

Nächste Schritte