SnowConvert AI - Teradata - Considérations relatives à la migration des données¶
Cette section décrit des considérations importantes lors de la migration de données de Teradata vers Snowflake.
Note
Considérez qu’il s’agit d’un travail en cours.
Lors de la migration des données de Teradata vers Snowflake, il est crucial de prendre en compte les différences fonctionnelles entre les bases de données. Cette page présente les meilleures suggestions pour la migration des données.
Examinez les informations suivantes :
Migration de données UNION ALL¶
Considérations relatives à la migration des données pour UNION ALL.
UNION ALL est un opérateur SQL qui permet de combiner plusieurs ensembles de résultats. La syntaxe est la suivante :
Pour plus d’informations, veuillez consulter la documentation Teradata suivante.
Différences de taille de colonne¶
Même si l’opération est traduite par le même opérateur dans Snowflake, il peut y avoir des différences détaillées dans l’équivalence fonctionnelle. Par exemple, l’union de différentes colonnes qui ont des tailles de colonnes différentes. Teradata tronque les valeurs lorsque la première instruction SELECT contient moins d’espace dans les colonnes.
Comportement de Teradata¶
Note
Même comportement dans les modes de session ANSI et TERA.
Pour cet exemple, l’entrée suivante montrera le comportement de Teradata.
Données de configuration Teradata¶
Données de configuration Snowflake¶
Case 1 - one single column: UNION ALL for a column VARCHAR(20) over a column VARCHAR(10)¶
SuccessPlaceholder
Dans ce cas, l’équivalence fonctionnelle est la même
Entrée Teradata¶
Sortie Teradata¶
Entrée Snowflake¶
Sortie Snowflake¶
Case 2 - one single column: UNION ALL for a column VARCHAR(10) over a column VARCHAR(20)¶
Danger
In this case, the functional equivalence is not the same.
Le cas suivant ne montre pas d’équivalence fonctionnelle dans Snowflake. Les valeurs des colonnes doivent être tronquées comme dans l’échantillon de Teradata.
Entrée Teradata¶
Sortie Teradata¶
Entrée Snowflake¶
Sortie Snowflake¶
Solution de contournement pour obtenir la même fonctionnalité
In this case, the size of the column of the table2 is 10 and the table1 is 20. So, the size of the first column in the query should be the element to complete the LEFT() function used here. For more information, see the Snowflake LEFT function documentation.
Entrée Snowflake¶
Sortie Snowflake¶
Case 3 - multiple columns - same size by table: UNION ALL for columns VARCHAR(20) over columns VARCHAR(10)¶
Dans ce cas, il est exigé d’établir de nouvelles données comme suit :
Données de configuration Teradata¶
Données de configuration Snowflake¶
Une fois les nouvelles tables et données créées, la requête suivante peut être évaluée.
Note
Dans ce cas, l’équivalence fonctionnelle est la même
Entrée Teradata¶
Sortie Teradata¶
col1 |
col2 |
|---|---|
valeur 1 abcdefghijk |
valeur 1 abcdefghijk |
t2 ligne 3 a |
t2 ligne 3 b |
valeur 2 abcdefghijk |
valeur 2 abcdefghijk |
t2 ligne 1 a |
t2 ligne 1 b |
t2 ligne 2 a |
t2 ligne 2 b |
Entrée Snowflake¶
Sortie Snowflake¶
col1 |
col2 |
|---|---|
valeur 1 abcdefghijk |
valeur 1 abcdefghijk |
valeur 2 abcdefghijk |
valeur 2 abcdefghijk |
t2 ligne 1 a |
t2 ligne 1 b |
t2 ligne 2 a |
t2 ligne 2 b |
t2 ligne 3 a |
t2 ligne 3 b |
Case 4 - multiple columns - same size by table: UNION ALL for columns VARCHAR(10) over columns VARCHAR(20)¶
Avertissement
In this case, the functional equivalence is not the same.
Entrée Teradata¶
Sortie Teradata¶
col1 |
col2 |
|---|---|
t2 ligne 3 a |
t2 ligne 3 b |
valeur 1 ab |
valeur 1 ab |
t2 ligne 1 a |
t2 ligne 1 b |
t2 ligne 2 a |
t2 ligne 2 b |
valeur 2 ab |
valeur 2 ab |
Entrée Snowflake¶
Sortie Snowflake¶
col1 |
col2 |
|---|---|
t2 ligne 1 a |
t2 ligne 1 b |
t2 ligne 2 a |
t2 ligne 2 b |
t2 ligne 3 a |
t2 ligne 3 b |
valeur 1 abcdefghijk |
valeur 1 abcdefghijk |
valeur 2 abcdefghijk |
valeur 2 abcdefghijk |
Solution de contournement pour obtenir la même fonctionnalité
Appliquez la taille de la colonne au deuxième SELECT sur les colonnes pour obtenir la même fonctionnalité.
Entrée Snowflake¶
Sortie Snowflake¶
col1 |
col2 |
|---|---|
t2 ligne 1 a |
t2 ligne 1 b |
t2 ligne 2 a |
t2 ligne 2 b |
t2 ligne 3 a |
t2 ligne 3 b |
valeur 1 ab |
valeur 1 ab |
valeur 2 ab |
valeur 2 ab |
Case 5 - multiple columns - different sizes by table: UNION ALL for columns VARCHAR(10) over columns VARCHAR(20)¶
Dans ce cas, il est exigé d’établir de nouvelles données comme suit :
Données de configuration Teradata¶
Données de configuration Snowflake¶
Une fois les nouvelles tables et données créées, la requête suivante peut être évaluée.
Note
Dans ce cas, l’équivalence fonctionnelle est la même
Entrée Teradata¶
Sortie Teradata¶
col1 |
col2 |
|---|---|
valeur 1 abcdefghijk |
valeur 1 abcd |
t2 ligne 3 a |
t2 3b |
valeur 2 abcdefghijk |
valeur 2 abcd |
t2 ligne 1 a |
t2 1b |
t2 ligne 2 a |
t2 2b |
Entrée Snowflake¶
Sortie Snowflake¶
col1 |
col2 |
|---|---|
valeur 1 abcdefghijk |
valeur 1 abcd |
valeur 2 abcdefghijk |
valeur 2 abcd |
t2 ligne 1 a |
t2 1b |
t2 ligne 2 a |
t2 2b |
t2 ligne 3 a |
t2 3b |
Case 6 - multiple columns - different sizes by table: UNION ALL for columns VARCHAR(20), VARCHAR(10) over columns VARCHAR(10), VARCHAR(5)¶
Avertissement
In this case, the functional equivalence is not the same.
Entrée Teradata¶
Sortie Teradata¶
col1 |
col2 |
|---|---|
t2 ligne 3 a |
t2 3b |
valeur 1ab |
Valeur |
t2 ligne 1 a |
t2 1b |
t2 ligne 2 a |
t2 2b |
valeur 2 ab |
Valeur |
Entrée Snowflake¶
Sortie Snowflake¶
col1 |
col2 |
|---|---|
t2 ligne 1 a |
t2 1b |
t2 ligne 2 a |
t2 2b |
t2 ligne 3 a |
t2 3b |
valeur 1 abcdefghijk |
valeur 1 abcd |
valeur 2 abcdefghijk |
valeur 2 abcd |
Solution de contournement pour obtenir la même fonctionnalité
La colonne de la première SELECT dont la taille est la plus petite est utilisée pour déterminer la taille des colonnes de la deuxième SELECT.
Entrée Snowflake¶
Sortie Snowflake¶
col1 |
col2 |
|---|---|
t2 ligne 3 a |
t2 3b |
valeur 1ab |
Valeur |
t2 ligne 1 a |
t2 1b |
t2 ligne 2 a |
t2 2b |
valeur 2 ab |
Valeur |
Case 7 - multiple columns expression - different sizes by table: UNION ALL for columns VARCHAR(20), VARCHAR(20) over columns VARCHAR(10), VARCHAR(10)¶
Use the data set up in Case 3 — Multiple columns — Same size by table. Once the new tables and data are created, the following query can be evaluated.
Note
Dans ce cas, l’équivalence fonctionnelle est la même
Entrée Teradata¶
Sortie Teradata¶
col1 || col2 |
|---|
valeur 1 abcdefghijkvalue 1 abcdefghijk |
t2 ligne 3 at2 ligne 3 b |
valeur 2 abcdefghijkvalue 2 abcdefghijk |
t2 ligne 1 at2 ligne 1 b |
t2 ligne 2 at2 ligne 2 b |
Entrée Snowflake¶
Sortie Snowflake¶
col1 || col2 |
|---|
valeur 1 abcdefghijkvalue 1 abcdefghijk |
valeur 2 abcdefghijkvalue 2 abcdefghijk |
t2 ligne 1 at2 ligne 1 b |
t2 ligne 2 at2 ligne 2 b |
t2 ligne 3 at2 ligne 3 b |
Case 8 - multiple columns expression - different sizes by table: UNION ALL for columns VARCHAR(20), VARCHAR(20) over columns VARCHAR(10), VARCHAR(10)¶
Avertissement
Ce cas présente des différences fonctionnelles.
Entrée Teradata¶
Sortie Teradata¶
col1 || col2 |
|---|
t2 ligne 1 at2 ligne 1 b |
t2 ligne 2 at2 ligne 2 b |
t2 ligne 3 at2 ligne 3 b |
valeur 1 abcdefghijkv |
valeur 2 abcdefghijkv |
Entrée Snowflake¶
Sortie Snowflake¶
col1 || col2 |
|---|
t2 ligne 1 at2 ligne 1 b |
t2 ligne 2 at2 ligne 2 b |
t2 ligne 3 at2 ligne 3 b |
valeur 1 abcdefghijkvalue 1 abcdefghijk |
valeur 2 abcdefghijkvalue 2 abcdefghijk |
Solution de contournement pour obtenir la même fonctionnalité
The sum of the column sizes of the smaller column should be used in the LEFT function. For example, if the smaller column is VARCHAR(10), then the limit of the LEFT function should be 20 (10 + 10).
Avertissement
If the first SELECT result is smaller, its sum would be used for the truncation of the values.
Entrée Snowflake¶
Sortie Snowflake¶
col1 || col2 |
|---|
t2 ligne 1 at2 ligne 1 b |
t2 ligne 2 at2 ligne 2 b |
t2 ligne 3 at2 ligne 3 b |
valeur 1 abcdefghijkv |
valeur 2 abcdefghijkv |
Autres considérations sur les différences de taille des colonnes¶
CHARetVARCHARse comportent de la même manière.Les colonnes de chiffres peuvent se comporter différemment. Les nombres ne peuvent pas être tronqués, il y a donc un débordement dans l’environnement Teradata. Cette disposition ne s’applique donc pas à ces types de données. Examinez l’exemple suivant :