Anzeigen von MySQL-Daten in Snowflake

Bemerkung

Der Snowflake Connector for MySQL 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 MySQL befindet.

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

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 MySQL 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 MySQL Für eine detailliertere Kontrolle über bestimmte Zielobjekte verwenden Sie die Rolle ACCOUNTADMIN, um entsprechende Berechtigungen zu erteilen, oder erstellen Sie Datenbankrollen.

Zuordnung von MySQL 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, wie die Datentypen der Konnektoren den Snowflake-Typen zugeordnet werden.

MySQL-Typ

Snowflake-Typ

Anmerkungen

DECIMAL / NUMERIC

NUMBER

Die maximale Anzahl von Ziffern im Format DECIMAL für MySQL beträgt 65. Für Snowflake liegt das Maximum bei 38.

Unterstützt bis zu den maximal zulässigen Ziffern in Snowflake. Bei Überschreitung geht die Präzision verloren. Weitere Informationen finden Sie unter Numerische Datentypen.

INT / INTEGER

INT

TINYINT / BOOL

INT

SMALLINT

INT

MEDIUMINT

INT

BIGINT

INT

YEAR

INT

FLOAT

FLOAT

DOUBLE

FLOAT

VARCHAR

VARCHAR

TINYTEXT

VARCHAR

TEXT

VARCHAR

ENUM

VARCHAR

Gespeichert als Zeichenfolge. Zum Beispiel sind für ENUM(‚eins‘, ‚zwei‘) die möglichen Werte: ‚eins‘, ‚zwei‘.

SET

VARCHAR

Gespeichert als Zeichenfolge mit Komma in der Reihenfolge der Spaltendeklaration. Zum Beispiel sind für SET(‚eins‘, ‚zwei‘) die möglichen Werte: ‚ ‚, ‚eins‘, ‚zwei‘, ‚eins, zwei‘.

MEDIUMTEXT

VARCHAR

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

LONGTEXT

VARCHAR

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

CHAR

VARCHAR

An Snowflake ohne die nachstehenden Leerzeichen gesendet.

BIT

VARCHAR

Dargestellt in hexadezimaler Form, zum Beispiel: ‚83060c183060c183‘.

DATE

DATE

In den Zieltabellen als Zeichenfolgen gespeichert, zum Beispiel ‚1971-01-31‘. In vereinfachten Ansichten wird das Datum in DATE umgewandelt.

DATETIME

DATETIME / TIMESTAMP_NTZ

TIMESTAMP

TIMESTAMP_TZ

In den Zieltabellen als Zeichenfolgen in UTC gespeichert, zum Beispiel ‚2000-12-30 23:59:59.001009+00:00‘. In vereinfachten Ansichten werden die Zeitstempel in TIMESTAMP_TZ umgewandelt.

TIME

TIME

In den Zieltabellen als Zeichenfolgen gespeichert, zum Beispiel ‚23:59:59‘. In vereinfachten Ansichten werden die Zeitwerte in TIME umgewandelt.

BINARY

BINARY

MEDIUMBLOB

BINARY

Unterstützt bis zur maximalen Eintragsgröße in Snowflake, die 16MB beträgt.

LONGBLOB

BINARY

Unterstützt bis zur maximalen Eintragsgröße in Snowflake, die 16MB beträgt.

BLOB

BINARY

VARBINARY

BINARY

TINYBLOB

BINARY

JSON

VARIANT

JSON kann auf MySQL BinLog als vollständiges Dokument oder als Teilaktualisierung gespeichert werden. Standardmäßig wird es als vollständiges Dokument gespeichert. Teilweise Aktualisierungen werden derzeit nicht unterstützt.

JSONs werden als Zeichenfolgen an Snowflake gesendet, aber Snowpipe Streaming konvertiert sie in einen VARIANT Datentyp und speichert sie intern als ARRAY, OBJECT, usw.

Unterstützt bis zur maximalen Eintragsgröße in Snowflake, die 16MB beträgt.

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 MySQL laufende Aufgaben