SnowConvert AI – Teradata – Hinweise zur Datenmigration¶
In diesem Abschnitt werden wichtige Hinweise zur Migration von Daten von Teradata nach Snowflake gegeben.
Bemerkung
Bedenken Sie, dass dies eine laufende Arbeit ist.
Bei der Migration von Daten von Teradata zu Snowflake ist es wichtig, die funktionalen Unterschiede zwischen den Datenbanken zu berücksichtigen. Auf dieser Seite finden Sie die besten Vorschläge für die Migration von Daten.
Überprüfen Sie die folgenden Informationen:
UNION ALL-Datenmigration¶
Hinweise zur Datenmigration für UNION ALL.
UNION ALL ist ein SQL Operator, der die Kombination mehrerer Resultsets ermöglicht. Die Syntax lautet wie folgt:
Weitere Informationen finden Sie in der folgenden Teradata-Dokumentation.
Spalte Größenunterschiede¶
Auch wenn der Operator in Snowflake in den gleichen Operator übersetzt wird, kann es detaillierte Unterschiede in der Funktionsäquivalenz geben. Zum Beispiel die Vereinigung von verschiedenen Spalten, die unterschiedliche Spaltengrößen haben. Teradata schneidet die Werte ab, wenn die erste SELECT Anweisung weniger Platz in den Spalten enthält.
Teradata-Verhaltensweise¶
Bemerkung
Gleiche Verhaltensweise in den Sitzungsmodi ANSI und TERA.
Für dieses Beispiel zeigt die folgende Eingabe die Verhaltensweise von Teradata.
Teradata-Setup-Daten¶
Snowflake-Setup-Daten¶
Case 1 - one single column: UNION ALL for a column VARCHAR(20) over a column VARCHAR(10)¶
SuccessPlaceholder
In diesem Fall ist die Funktionsäquivalenz dieselbe
Teradata-Eingabe¶
Teradata-Ausgabe¶
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
Case 2 - one single column: UNION ALL for a column VARCHAR(10) over a column VARCHAR(20)¶
Gefahr
In this case, the functional equivalence is not the same.
Der folgende Fall zeigt keine Funktionsäquivalenz in Snowflake. Die Spaltenwerte sollten wie in dem Teradata-Beispiel gekürzt werden.
Teradata-Eingabe¶
Teradata-Ausgabe¶
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
Umgehungsmöglichkeit, um die gleiche Funktionalität zu erhalten
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.
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
Case 3 - multiple columns - same size by table: UNION ALL for columns VARCHAR(20) over columns VARCHAR(10)¶
In diesem Fall müssen Sie die neuen Daten wie folgt einrichten:
Teradata-Setup-Daten¶
Snowflake-Setup-Daten¶
Sobald die neuen Tabellen und Daten erstellt sind, kann die folgende Abfrage ausgewertet werden.
Bemerkung
In diesem Fall ist die Funktionsäquivalenz dieselbe
Teradata-Eingabe¶
Teradata-Ausgabe¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcdefghijk |
t2 row 3 a |
t2 row 3 b |
value 2 abcdefghijk |
value 2 abcdefghijk |
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcdefghijk |
value 2 abcdefghijk |
value 2 abcdefghijk |
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
t2 row 3 a |
t2 row 3 b |
Case 4 - multiple columns - same size by table: UNION ALL for columns VARCHAR(10) over columns VARCHAR(20)¶
Warnung
In this case, the functional equivalence is not the same.
Teradata-Eingabe¶
Teradata-Ausgabe¶
col1 |
col2 |
|---|---|
t2 row 3 a |
t2 row 3 b |
value 1 ab |
value 1 ab |
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
value 2 ab |
value 2 ab |
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 |
col2 |
|---|---|
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
t2 row 3 a |
t2 row 3 b |
value 1 abcdefghijk |
value 1 abcdefghijk |
value 2 abcdefghijk |
value 2 abcdefghijk |
Umgehungsmöglichkeit, um die gleiche Funktionalität zu erhalten
Wenden Sie die Spaltengröße auf die zweite SELECT auf die Spalten an, um die gleiche Funktionalität zu erhalten.
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 |
col2 |
|---|---|
t2 row 1 a |
t2 row 1 b |
t2 row 2 a |
t2 row 2 b |
t2 row 3 a |
t2 row 3 b |
value 1 ab |
value 1 ab |
value 2 ab |
value 2 ab |
Case 5 - multiple columns - different sizes by table: UNION ALL for columns VARCHAR(10) over columns VARCHAR(20)¶
In diesem Fall müssen Sie die neuen Daten wie folgt einrichten:
Teradata-Setup-Daten¶
Snowflake-Setup-Daten¶
Sobald die neuen Tabellen und Daten erstellt sind, kann die folgende Abfrage ausgewertet werden.
Bemerkung
In diesem Fall ist die Funktionsäquivalenz dieselbe
Teradata-Eingabe¶
Teradata-Ausgabe¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcd |
t2 row 3 a |
t2 3b |
value 2 abcdefghijk |
value 2 abcd |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 |
col2 |
|---|---|
value 1 abcdefghijk |
value 1 abcd |
value 2 abcdefghijk |
value 2 abcd |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
t2 row 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)¶
Warnung
In this case, the functional equivalence is not the same.
Teradata-Eingabe¶
Teradata-Ausgabe¶
col1 |
col2 |
|---|---|
t2 row 3 a |
t2 3b |
value 1 ab |
value |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
value 2 ab |
value |
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 |
col2 |
|---|---|
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
t2 row 3 a |
t2 3b |
value 1 abcdefghijk |
value 1 abcd |
value 2 abcdefghijk |
value 2 abcd |
Umgehungsmöglichkeit, um die gleiche Funktionalität zu erhalten
Die Spalte mit der kleinsten Größe aus der ersten SELECT wird verwendet, um die Größe der Spalten aus der zweiten SELECT zu bestimmen.
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 |
col2 |
|---|---|
t2 row 3 a |
t2 3b |
value 1 ab |
value |
t2 row 1 a |
t2 1b |
t2 row 2 a |
t2 2b |
value 2 ab |
value |
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.
Bemerkung
In diesem Fall ist die Funktionsäquivalenz dieselbe
Teradata-Eingabe¶
Teradata-Ausgabe¶
col1 || col2 |
|---|
value 1 abcdefghijkvalue 1 abcdefghijk |
t2 row 3 at2 row 3 b |
value 2 abcdefghijkvalue 2 abcdefghijk |
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 || col2 |
|---|
value 1 abcdefghijkvalue 1 abcdefghijk |
value 2 abcdefghijkvalue 2 abcdefghijk |
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 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)¶
Warnung
Dieser Fall weist funktionelle Unterschiede auf.
Teradata-Eingabe¶
Teradata-Ausgabe¶
col1 || col2 |
|---|
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
value 1 abcdefghijkv |
value 2 abcdefghijkv |
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 || col2 |
|---|
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
value 1 abcdefghijkvalue 1 abcdefghijk |
value 2 abcdefghijkvalue 2 abcdefghijk |
Umgehungsmöglichkeit, um die gleiche Funktionalität zu erhalten
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).
Warnung
If the first SELECT result is smaller, its sum would be used for the truncation of the values.
Snowflake-Eingabe¶
Snowflake-Ausgabe¶
col1 || col2 |
|---|
t2 row 1 at2 row 1 b |
t2 row 2 at2 row 2 b |
t2 row 3 at2 row 3 b |
value 1 abcdefghijkv |
value 2 abcdefghijkv |
Andere Überlegungen zu unterschiedlichen Spaltengrößen¶
CHARundVARCHARverhalten sich gleich.Zahlenspalten können sich anders verhalten. Die Zahlen können nicht gekürzt werden, so dass es in der Teradata-Umgebung zu einem Überlauf kommt. Daher wird dies nicht auf diese Datentypen angewendet. Sehen Sie sich das folgende Beispiel an: