Affichage des données PostgreSQL dans Snowflake¶
Note
Le Snowflake Connector for PostgreSQL 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 PostgreSQL d’origine.table_name
est le nom de la table PostgreSQL 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 PostgreSQL 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 PostgreSQL. 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 PostgreSQL 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 indique le mappage des types de données de PostgreSQL vers Snowflake.
Type PostgreSQL |
Type Snowflake |
Remarques |
---|---|---|
BIGINT / INT8 |
INT |
|
BIGSERIAL / SERIAL8 |
INT |
|
BIT [(N)] |
VARCHAR |
|
BIT VARYING [(N)] / VARBIT [(n)] |
VARCHAR |
|
BOOLEAN / BOOL |
BOOLEAN |
|
BOX |
VARCHAR |
|
BYTEA |
BINARY(N) |
Pris en charge jusqu’à la taille de point de données maximale dans Snowflake (16MB). Longueur maximale 1 GB. |
CHARACTER [(N)] / CHAR [(N)] |
VARCHAR [N] |
Longueur maximale 10485760 ~= 10 MB |
CHARACTER VARYING [(N)] / VARCHAR [(N)] |
VARCHAR [N] |
Longueur maximale 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 |
Pris en charge jusqu’à la taille de point de données maximale dans Snowflake (16MB). |
JSONB |
VARIANT |
Pris en charge jusqu’à la taille de point de données maximale dans Snowflake (16MB). |
LINE |
VARCHAR |
|
LSEG |
VARCHAR |
|
MACADDR |
VARCHAR |
|
MACADDR8 |
VARCHAR |
|
MONEY |
VARIANT |
|
NUMERIC [(P, S)] / DECIMAL [(P, S)] |
DECIMAL(P, S) |
L’échelle et la précision sont également recréées côté Snowflake, préservant ainsi les limitations de Snowflake. |
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)] [ sans fuseau horaire ] |
TIME |
|
TIME [(P)] avec fuseau horaire |
TIME |
|
TIMESTAMP [(P)] [ sans fuseau horaire ] |
DATETIME / TIMESTAMP_NTZ |
|
TIMESTAMP [(P)] avec fuseau horaire |
TIMESTAMP_TZ |
|
TSQUERY |
VARCHAR |
|
TSVECTOR |
VARCHAR |
|
UUID |
VARCHAR |
|
XML |
VARCHAR |
Tous les autres types, y compris les tableaux, ENUMs et les types et plages personnalisés sont mappés vers des valeurs VARCHAR dans Snowflake. Le tableau suivant illustre le mode de traitement des types non explicitement mentionnés dans le tableau ci-dessus.
Type PostgreSQL |
Données dans PostgreSQL |
Colonne dans Snowflake |
---|---|---|
ENUM |
lundi |
« lundi » |
tableau d’INTEGER |
{1,2,3,5} |
« {1,2,3,5} » |
intrange |
[6,31) |
« [6,31) » |
type personnalisé (2 champs, INT4 et TEXT) |
(valeur textuelle,5432) |
« (valeur textuelle,5432) » |
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 PostgreSQL