Affichage des données MySQL dans Snowflake¶
Note
Le Snowflake Connector for MySQL est soumis aux Conditions du connecteur.
Le connecteur réplique les données vers la base de données de destination, qui a été définie lors de la configuration du connecteur et de l’appel de PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>')
.
Les tables de données contiennent les données répliquées et sont disponibles sous l’identificateur dest_db.schema_name.table_name
, où :
dest_db
est le nom de la base de données de destination.schema_name
est le nom du schéma dans lequel réside la table MySQL d’origine.table_name
est le nom de la table MySQL d’origine.
Note
dest_db
, schema_name
et table_name
doivent être placés entre guillemets doubles au cas où leurs noms sont un mélange de majuscules et de minuscules.
Les tables répliquées contiennent les colonnes de métadonnées supplémentaires :
Nom de la colonne |
Type de données |
Description |
---|---|---|
|
TIMESTAMP_NTZ |
Horodatage du moment où la ligne a été insérée dans la table de destination, au format UTC. |
|
TIMESTAMP_NTZ |
Horodatage de la dernière mise à jour de la ligne dans la table de destination, au format UTC. |
|
BOOLEAN |
La valeur est définie sur |
Les types de données répliqués sont mappés de sorte à correspondre aux types Snowflake. Pour plus d’informations, voir Mappage des types de données de MySQL vers Snowflake.
Contrôle d’accès aux données répliquées¶
Pour contrôler l’accès aux données répliquées, utilisez le rôle d’application DATA_READER
. Pour en savoir plus sur les rôles d’application de connecteur : Rôles d’application dans Snowflake Connector for MySQL. Pour un contrôle plus granulaire de certains objets de destination, utilisez le rôle ACCOUNTADMIN
pour accorder des privilèges appropriés ou créer des rôles de base de données.
Mappage des types de données de MySQL vers Snowflake¶
Dans Snowflake, les noms de colonne des tables répliquées sont en majuscules et les types sont mappés de sorte à correspondre aux types Snowflake.
Le tableau suivant montre comment les types de données du connecteur sont mappés vers les types Snowflake.
Type MySQL |
Type Snowflake |
Remarques |
---|---|---|
DECIMAL / NUMERIC |
NUMBER |
Le nombre maximal de chiffres au format DECIMAL pour MySQL est 65. Pour Snowflake, le maximum est 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 |
Stocké sous forme de chaîne. Par exemple, pour ENUM(“un”, “deux”), les valeurs possibles sont : “un”, “deux”. |
SET |
VARCHAR |
Stocké sous forme de chaîne jointe par des virgules dans l’ordre de déclaration des colonnes. Par exemple, pour SET(“un”, “deux”), les valeurs possibles sont : “ “, “un”, “deux”, “un,deux”. |
MEDIUMTEXT |
VARCHAR |
Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake (16MB). |
LONGTEXT |
VARCHAR |
Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake (16MB). |
CHAR |
VARCHAR |
Envoyé à Snowflake sans les espaces de fin. |
BIT |
VARCHAR |
Représenté au format hexadécimal, par exemple : “83060c183060c183”. |
DATE |
DATE |
Stocké dans les tables cibles sous forme de chaînes, par exemple “1971-01-31”. Dans les vues aplaties, la date est convertie en DATE. |
DATETIME |
DATETIME / TIMESTAMP_NTZ |
|
TIMESTAMP |
TIMESTAMP_TZ |
Stocké dans les tables cibles sous forme de chaînes au format UTC, par exemple “2000-12-30 23:59:59.001009+00:00”. Dans les vues aplaties, les horodatages sont convertis en TIMESTAMP_TZ. |
TIME |
TIME |
Stocké dans les tables cibles sous forme de chaînes, par exemple “23:59:59”. Dans les vues aplaties, les valeurs d’heure sont converties en TIME. |
BINARY |
BINARY |
|
MEDIUMBLOB |
BINARY |
Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake, qui est de 16MB. |
LONGBLOB |
BINARY |
Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake, qui est de 16MB. |
BLOB |
BINARY |
|
VARBINARY |
BINARY |
|
TINYBLOB |
BINARY |
|
JSON |
VARIANT |
JSON peut être stocké dans le BinLog MySQL sous forme de document complet ou de mise à jour partielle. Par défaut, il est stocké sous forme de document complet. Les mises à jour partielles ne sont actuellement pas prises en charge. Les JSONs sont envoyés à Snowflake sous forme de chaînes, mais Snowpipe Streaming les convertit en type de données VARIANT et les stocke en interne sous forme d’ARRAY, d’OBJECT, etc. Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake, qui est de 16MB. |
Affichage des données des colonnes supprimées¶
Si une colonne est supprimée dans la table source, elle ne sera pas supprimée dans la table de destination. Au lieu de cela, on adopte une approche de type suppression logicielle et le nom de la colonne sera remplacé par le <nom précédent>__SNOWFLAKE_DELETED
afin que les valeurs historiques puissent encore être interrogées.
Par exemple, si une colonne A
est supprimée, son nom sera remplacé par A__SNOWFLAKE_DELETED
dans la table de destination et elle pourra être interrogée comme suit :
SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
Affichage des données de colonnes renommées¶
Le renommage d’une colonne équivaut à supprimer la colonne et à en créer une nouvelle portant le nouveau nom. La suppression suit l’approche de type suppression logicielle expliquée à la section précédente.
Par exemple, si la colonne A
a été renommée B
, dans la table de destination, la colonne A
est renommée A__SNOWFLAKE_DELETED
et une nouvelle colonne B
est ajoutée. Toutes les lignes existantes avant la modification conservent les valeurs de la colonne dans la colonne A__SNOWFLAKE_DELETED
, tandis que les valeurs des nouvelles lignes ajoutées après la modification sont placées dans la colonne B
. Les valeurs de la colonne renommée peuvent être affichées sous la forme d’une seule colonne via une simple requête :
SELECT
CASE WHEN B IS NULL THEN A__SNOWFLAKE_DELETED ELSE B END AS A_RENAMED_TO_B
FROM <TABLE_WITH_RENAMED_COLUMN>;
Une vue peut être créée pour simplifier l’utilisation après le changement de nom d’une colonne.
Prochaines étapes¶
Après avoir terminé ces procédures, passez en revue les processus à la section Tâches en cours Snowflake Connector for MySQL