Anzeigen von PostgreSQL-Daten in Snowflake

Bemerkung

Der Snowflake Connector for PostgreSQL unterliegt den Nutzungsbedingungen für Konnektoren.

Der Konnektor repliziert Daten in die Zieldatenbank, die bei der Einstellung des Konnektors und dem Aufruf von PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>') definiert wurde.

Datentabellen enthalten die replizierten Daten und sind unter dem Bezeichner dest_db.schema_name.table_name verfügbar:

  • dest_db ist der Name der Zieldatenbank.

  • schema_name ist der Name des Schemas, in dem sich die ursprüngliche Tabelle PostgreSQL befindet.

  • table_name ist der Name der ursprünglichen Tabelle PostgreSQL.

Bemerkung

dest_db, schema_name und table_name müssen in doppelte Anführungszeichen gesetzt werden, falls ihre Namen in Groß- und Kleinbuchstaben geschrieben sind.

Die replizierten Tabellen enthalten die zusätzlichen Metadaten-Spalten:

Spaltenname

Datentyp

Beschreibung

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

Zeitstempel, wann die Zeile in die Zieltabelle eingefügt wurde, in UTC.

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

Zeitstempel, wann die Zeile in der Zieltabelle zuletzt aktualisiert wurde, in UTC.

_SNOWFLAKE_DELETED

BOOLEAN

Der Wert ist true, wenn die Zeile aus der Quelltabelle gelöscht wurde.

Die replizierten Datentypen werden den Snowflake-Typen zugeordnet. Weitere Informationen dazu finden Sie unter Zuordnung von PostgreSQL zu Snowflake-Datentypen.

Zugriffssteuerung für replizierte Daten

Um den Zugriff auf replizierte Daten zu kontrollieren, verwenden Sie die Anwendungsrolle DATA_READER. Mehr über Konnektor-Anwendungsrollen: Anwendungsrollen in Snowflake Connector for PostgreSQL Für eine detailliertere Kontrolle über bestimmte Zielobjekte verwenden Sie die Rolle ACCOUNTADMIN, um entsprechende Berechtigungen zu erteilen, oder erstellen Sie Datenbankrollen.

Zuordnung von PostgreSQL zu Snowflake-Datentypen

In Snowflake werden die Spaltennamen der replizierten Tabellen groß geschrieben, und die Typen werden den Snowflake-Typen zugeordnet.

Die folgende Tabelle zeigt die Zuordnung von PostgreSQL zu Snowflake-Typen.

PostgreSQL-Typ

Snowflake-Typ

Anmerkungen

BIGINT / INT8

INT

BIGSERIAL / SERIAL8

INT

BIT [(N)]

VARCHAR

BIT VARYING [(N)] / VARBIT [(n)]

VARCHAR

BOOLEAN / BOOL

BOOLEAN

BOX

VARCHAR

BYTEA

BINARY(N)

Unterstützt bis zur maximalen Datenpunktgröße in Snowflake (16MB). Maximale Länge 1 GB.

CHARACTER [(N)] / CHAR [(N)]

VARCHAR [N]

Maximale Länge 10485760 ~= 10 MB

CHARACTER VARYING [(N)] / VARCHAR [(N)]

VARCHAR [N]

Maximale Länge 10485760 ~= 10 MB

CIDR

VARCHAR

CIRCLE

VARCHAR

DATE

DATE

DOUBLE PRECISION / FLOAT8

FLOAT

INET

VARCHAR

INTEGER / INT / INT4

INT

INTERVAL [FIELDS][(P)]

VARCHAR

JSON

VARIANT

Unterstützt bis zur maximalen Datenpunktgröße in Snowflake (16MB).

JSONB

VARIANT

Unterstützt bis zur maximalen Datenpunktgröße in Snowflake (16MB).

LINE

VARCHAR

LSEG

VARCHAR

MACADDR

VARCHAR

MACADDR8

VARCHAR

MONEY

VARIANT

NUMERIC [(P, S)] / DECIMAL [(P, S)]

DECIMAL(P, S)

Maßstab und Präzision werden auch auf der Snowflake-Seite nachgebildet, wobei die Beschränkungen von Snowflake erhalten bleiben.

PATH

VARCHAR

PG_LNS

VARCHAR

POINT

VARCHAR

POLYGON

VARCHAR

REAL / FLOAT4

FLOAT

SMALLINT / INT2

INT

SMALLSERIAL / SERIAL2

INT

SERIAL / SERIAL4

INT

TEXT

VARCHAR

TIME [(P)] [ ohne Zeitzone]

TIME

TIME [(P)] mit Zeitzone

TIME

TIMESTAMP [(P)] [ ohne Zeitzone]

DATETIME / TIMESTAMP_NTZ

TIMESTAMP [(P)] mit Zeitzone

TIMESTAMP_TZ

TSQUERY

VARCHAR

TSVECTOR

VARCHAR

UUID

VARCHAR

XML

VARCHAR

Alle anderen Typen, einschließlich Arrays, ENUMs, benutzerdefinierte Typen und Bereiche werden in Snowflake den Werten von VARCHAR zugeordnet. Die folgende Tabelle veranschaulicht, wie Typen, die in der obigen Tabelle nicht ausdrücklich erwähnt sind, behandelt werden.

PostgreSQL-Typ

Daten in PostgreSQL

Kolumne in Snowflake

ENUM

Montag

„Montag“

Array von INTEGER

{1,2,3,5}

„{1,2,3,5}“

innerhalb des Bereichs

[6,31)

„[6,31)“

benutzerdefinierter Typ (2 Felder, INT4 und TEXT)

(Text Wert,5432)

„(Text Wert,5432)“

Anzeigen von Daten aus gelöschten Spalten

Wenn eine Spalte in der Quelltabelle gelöscht wird, wird sie nicht in der Zieltabelle gelöscht. Stattdessen wird ein Soft-Delete-Ansatz verfolgt und die Spalte wird in den <vorherigen Namen>__SNOWFLAKE_DELETED umbenannt, sodass die historischen Werte weiterhin abgefragt werden können.

Wenn zum Beispiel eine Spalte A gelöscht wird, wird sie in der Zieltabelle in A__SNOWFLAKE_DELETED umbenannt und kann wie folgt abgefragt werden

SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
Copy

Anzeigen von Daten aus umbenannten Spalten

Das Umbenennen einer Spalte ist gleichbedeutend mit dem Löschen der Spalte und dem Erstellen einer neuen Spalte mit dem neuen Namen. Die Löschung erfolgt nach dem im vorherigen Abschnitt erläuterten Ansatz des sanften Löschens.

Wenn z. B. die Spalte A in B umbenannt wurde – in der Zieltabelle wurde A in A__SNOWFLAKE_DELETED umbenannt und eine neue Spalte B wird hinzugefügt. Alle Zeilen, die vor der Änderung vorhanden waren, behalten die Werte der Spalte in der Spalte A__SNOWFLAKE_DELETED, während neue Zeilen, die nach der Änderung hinzugefügt werden, die Werte in der Spalte B erhalten. Die Werte der umbenannten Spalte können mit einer einfachen Abfrage als eine einzige Spalte angezeigt werden:

SELECT
     CASE WHEN B IS NULL THEN A__SNOWFLAKE_DELETED ELSE B END AS A_RENAMED_TO_B
FROM <TABLE_WITH_RENAMED_COLUMN>;
Copy

Sie können eine Ansicht erstellen, um die Verwendung zu vereinfachen, nachdem eine Spalte umbenannt wurde.

Nächste Schritte

Nachdem Sie diese Prozeduren abgeschlossen haben, überprüfen Sie die Vorgänge in Snowflake Connector for PostgreSQL laufende Aufgaben