SnowConvert : Guide de traduction Teradata SQL pour Snowflake¶
Cette page fournit un guide pour la traduction des instructions Teradata SQL vers Snowflake, en tirant parti des capacités de SnowConvert. Il couvre une variété de fonctions, de types de données et d’éléments de la syntaxe SQL, en mettant en évidence les différences clés et les stratégies de traduction. Ce guide est destiné à compléter la documentation officielle de SnowConvert et fournit un aperçu général. Reportez-vous à la documentation officielle pour obtenir les informations les plus détaillées et les plus récentes.
Mappage des types de données :
Teradata et Snowflake ont des types de données similaires mais pas identiques. SnowConvert gère le mappage automatiquement dans la plupart des cas, mais il est utile de comprendre les conversions sous-jacentes. Les mappages les plus courants sont les suivants :
Mappage des types de données :
Type de données Teradata |
Équivalent Snowflake |
Remarques |
---|---|---|
BYTEINT |
SMALLINT |
|
SMALLINT |
SMALLINT |
|
INTEGER |
INTEGER |
|
BIGINT |
BIGINT |
|
DECIMAL(p,s) |
NUMBER(p,s) |
La précision et l’échelle doivent être revues. |
FLOAT |
FLOAT / DOUBLE |
Peut présenter des nuances propres à la plateforme. |
REAL |
FLOAT |
|
CHAR(n) |
CHAR(n) |
Les différences de jeux de caractères doivent être prises en compte. |
VARCHAR(n) |
VARCHAR(n) |
Les différences de jeux de caractères doivent être prises en compte. |
CLOB |
VARCHAR(16777216) / TEXT |
Exige une manipulation prudente et peut impliquer différents mécanismes de stockage. |
BLOB |
VARBINARY |
Exige une manipulation prudente et peut impliquer différents mécanismes de stockage. |
DATE |
DATE |
|
TIME |
TIME |
|
TIMESTAMP |
TIMESTAMP_NTZ / TIMESTAMP_TZ |
Les considérations relatives au fuseau horaire doivent être examinées. |
INTERVAL |
INTERVAL |
Fonctions et syntaxe SQL :
SnowConvert automatise la traduction de nombreuses constructions SQL. Toutefois, certains domaines requièrent une attention particulière :
InstructionsDDL : CREATE TABLE, ALTER TABLE, DROP TABLE sont généralement traduites directement. Vérifiez la compatibilité des contraintes et des index.
Instructions DML : SELECT, INSERT, UPDATE, DELETE sont pour la plupart compatibles. Soyez attentif à l’utilisation des fonctions spécifiques dans ces instructions.
Fonctions agrégées : SUM, AVG, COUNT, MIN, MAX sont généralement traduites de manière transparente.
Fonctions de chaîne : Bien que de nombreuses fonctions de chaîne aient des équivalents (par exemple, SUBSTRING, UPPER, LOWER), certaines peuvent avoir des noms ou des comportements différents.
Fonctions de date et d’heure : Comme pour les fonctions de chaîne, vérifiez les équivalents des fonctions de date et d’heure pour détecter d’éventuelles divergences.
Fonctions analytiques : Les fonctions de fenêtre (par exemple, ROW_NUMBER, RANK, LAG, LEAD) sont généralement prises en charge par les deux plateformes, mais la syntaxe ou le comportement peuvent différer.
Procédures stockées et UDFs : Les procédures stockées et les fonctions définies par l’utilisateur de Teradata (UDFs) nécessitent une conversion. SnowConvert peut faciliter ce processus, mais un examen et des ajustements manuels sont souvent nécessaires.
Macros : Les macros Teradata devront être réécrites en tant que procédures stockées Snowflake ou qu’UDFs.
Logique conditionnelle : Les instructions CASE sont généralement compatibles.
Jointures : Les jointures internes, externes et croisées sont généralement traduites sans problème.
Transactions : Le modèle de transactions de Snowflake peut différer de celui de Teradata, il faut donc revoir la logique des transactions.
Fonctions spécifiques de Teradata : Les fonctions propres à Teradata (par exemple, les schémas spécifiques de partitionnement des tables et les compressions de valeurs multiples) peuvent ne pas avoir d’équivalents directs dans Snowflake et nécessiter d’autres exigences.