SnowConvert AI - Teradata - データ移行に関する考慮事項¶
このセクションでは、TeradataからSnowflakeにデータを移行する際の重要な考慮事項について説明します。
注釈
これは進行中の作業であることを考慮してください。
TeradataからSnowflakeにデータを移行する場合、データベース間の機能の違いを考慮することが重要です。このページでは、データ移行に最適な提案を紹介します。
以下の情報をご確認ください。
UNION ALL データ移行¶
UNION ALL のデータ移行に関する考慮事項。
UNION ALL は、 SQL 演算子で、複数の結果セットを組み合わせることができます。構文は以下の通りです。
詳細情報については、以下の Teradata ドキュメントを参照してください。
列サイズの違い¶
演算子がSnowflakeでは同じ演算子に変換されていても、機能の等価性には細かな違いがある可能性があります。例えば、列サイズが異なる列の結合です。Teradataは、最初の SELECT ステートメントに列のスペースが少ない場合、値を切り捨てます。
Teradataの動作¶
注釈
ANSI および TERA セッションモードで同じ動作。
この例では、以下の入力がTeradataの動作を示します。
Teradataの設定データ¶
Snowflakeの設定データ¶
Case 1 - one single column: UNION ALL for a column VARCHAR(20) over a column VARCHAR(10)¶
SuccessPlaceholder
この場合、機能的等価性は同じです
Teradataの入力¶
Teradataの出力¶
Snowflakeの入力¶
Snowflakeの出力¶
Case 2 - one single column: UNION ALL for a column VARCHAR(10) over a column VARCHAR(20)¶
危険
In this case, the functional equivalence is not the same.
次のケースは、Snowflakeでは機能的等価性を示しません。列の値は、Teradataのサンプルと同様に切り捨ててください。
Teradataの入力¶
Teradataの出力¶
Snowflakeの入力¶
Snowflakeの出力¶
同じ関数を得るための回避策
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の入力¶
Snowflakeの出力¶
Case 3 - multiple columns - same size by table: UNION ALL for columns VARCHAR(20) over columns VARCHAR(10)¶
この場合、次のように新しいデータをセットする必要があります。
Teradataの設定データ¶
Snowflakeの設定データ¶
新しいテーブルとデータが作成されると、以下のクエリが評価できるようになります。
注釈
この場合、機能的等価性は同じです
Teradataの入力¶
Teradataの出力¶
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の入力¶
Snowflakeの出力¶
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)¶
警告
In this case, the functional equivalence is not the same.
Teradataの入力¶
Teradataの出力¶
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の入力¶
Snowflakeの出力¶
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 |
同じ関数を得るための回避策
同じ機能を得るには、列の2番目の SELECT に列サイズを適用します。
Snowflakeの入力¶
Snowflakeの出力¶
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)¶
この場合、次のように新しいデータをセットする必要があります。
Teradataの設定データ¶
Snowflakeの設定データ¶
新しいテーブルとデータが作成されると、以下のクエリが評価できるようになります。
注釈
この場合、機能的等価性は同じです
Teradataの入力¶
Teradataの出力¶
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の入力¶
Snowflakeの出力¶
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)¶
警告
In this case, the functional equivalence is not the same.
Teradataの入力¶
Teradataの出力¶
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の入力¶
Snowflakeの出力¶
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 |
同じ関数を得るための回避策
最初の SELECT のサイズが最も小さい列を使用して、2番目の SELECT の列のサイズを決定します。
Snowflakeの入力¶
Snowflakeの出力¶
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.
注釈
この場合、機能的等価性は同じです
Teradataの入力¶
Teradataの出力¶
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の入力¶
Snowflakeの出力¶
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)¶
警告
このケースには機能的な違いがあります。
Teradataの入力¶
Teradataの出力¶
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の入力¶
Snowflakeの出力¶
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 |
同じ関数を得るための回避策
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).
警告
If the first SELECT result is smaller, its sum would be used for the truncation of the values.
Snowflakeの入力¶
Snowflakeの出力¶
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 |
列サイズの違いに関するその他の考慮事項¶
CHARとVARCHARは同じように動作します。数値列は異なる動作をする場合があります。数値は切り捨てられないので、Teradata環境ではオーバーフローが発生します。そのため、これらのデータ型には適用されません。次の例を見てください。