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