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 |
---|---|---|
|
TIMESTAMP_NTZ |
Zeitstempel, wann die Zeile in die Zieltabelle eingefügt wurde, in UTC. |
|
TIMESTAMP_NTZ |
Zeitstempel, wann die Zeile in der Zieltabelle zuletzt aktualisiert wurde, in UTC. |
|
BOOLEAN |
Der Wert ist |
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>;
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>;
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