SnowConvert AI – Teradata – Considerações sobre a migração de dados¶
Esta seção descreve considerações importantes ao migrar dados do Teradata para o Snowflake.
Nota
Considere que este é um trabalho em andamento.
Ao migrar dados do Teradata para o Snowflake, é fundamental considerar as diferenças funcionais entre os bancos de dados. Esta página apresenta as melhores sugestões para a migração de dados.
Analise as informações a seguir:
Migração de dados UNION ALL¶
Considerações sobre migração de dados para UNION ALL.
UNION ALL é um operador SQL que permite a combinação de vários conjuntos de resultados. A sintaxe é a seguinte:
Para obter mais informações, consulte a seguinte documentação do Teradata.
Diferenças no tamanho da coluna¶
Mesmo que o operador seja convertido para o mesmo operador no Snowflake, pode haver diferenças detalhadas na equivalência funcional. Por exemplo, a união de colunas diferentes que têm tamanhos de coluna diferentes. O Teradata trunca os valores quando a primeira instrução SELECT contém menos espaço nas colunas.
Comportamento do Teradata¶
Nota
O mesmo comportamento nos modos de sessão ANSI e TERA.
Para este exemplo, a entrada a seguir mostrará o comportamento do Teradata.
Dados de configuração do Teradata¶
Dados de configuração do Snowflake¶
Case 1 - one single column: UNION ALL for a column VARCHAR(20) over a column VARCHAR(10)¶
SuccessPlaceholder
Para esse caso, a equivalência funcional é a mesma
Entrada do Teradata¶
Saída do Teradata¶
Entrada do Snowflake¶
Saída do Snowflake¶
Case 2 - one single column: UNION ALL for a column VARCHAR(10) over a column VARCHAR(20)¶
Perigo
In this case, the functional equivalence is not the same.
O caso a seguir não mostra equivalência funcional no Snowflake. Os valores das colunas devem ser truncados como na amostra do Teradata.
Entrada do Teradata¶
Saída do Teradata¶
Entrada do Snowflake¶
Saída do Snowflake¶
Solução alternativa para obter a mesma funcionalidade
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.
Entrada do Snowflake¶
Saída do Snowflake¶
Case 3 - multiple columns - same size by table: UNION ALL for columns VARCHAR(20) over columns VARCHAR(10)¶
Para esse caso, é necessário configurar novos dados da seguinte forma:
Dados de configuração do Teradata¶
Dados de configuração do Snowflake¶
Depois que as novas tabelas e dados forem criados, a seguinte consulta poderá ser avaliada.
Nota
Para esse caso, a equivalência funcional é a mesma
Entrada do Teradata¶
Saída do 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 |
Entrada do Snowflake¶
Saída do 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)¶
Aviso
In this case, the functional equivalence is not the same.
Entrada do Teradata¶
Saída do 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 |
Entrada do Snowflake¶
Saída do 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 |
Solução alternativa para obter a mesma funcionalidade
Aplique o tamanho da coluna ao segundo SELECT nas colunas para obter a mesma funcionalidade.
Entrada do Snowflake¶
Saída do 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)¶
Para esse caso, é necessário configurar novos dados da seguinte forma:
Dados de configuração do Teradata¶
Dados de configuração do Snowflake¶
Depois que as novas tabelas e dados forem criados, a seguinte consulta poderá ser avaliada.
Nota
Para esse caso, a equivalência funcional é a mesma
Entrada do Teradata¶
Saída do 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 |
Entrada do Snowflake¶
Saída do 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)¶
Aviso
In this case, the functional equivalence is not the same.
Entrada do Teradata¶
Saída do 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 |
Entrada do Snowflake¶
Saída do 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 |
Solução alternativa para obter a mesma funcionalidade
A coluna com o menor tamanho da primeira SELECT é usada para determinar o tamanho das colunas da segunda SELECT.
Entrada do Snowflake¶
Saída do 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.
Nota
Para esse caso, a equivalência funcional é a mesma
Entrada do Teradata¶
Saída do 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 |
Entrada do Snowflake¶
Saída do 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)¶
Aviso
Esse caso tem diferenças funcionais.
Entrada do Teradata¶
Saída do 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 |
Entrada do Snowflake¶
Saída do 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 |
Solução alternativa para obter a mesma funcionalidade
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).
Aviso
If the first SELECT result is smaller, its sum would be used for the truncation of the values.
Entrada do Snowflake¶
Saída do 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 |
Outras considerações sobre as diferenças de tamanho de coluna¶
CHAReVARCHARse comportam da mesma forma.As colunas de números podem se comportar de forma diferente. Os números não podem ser truncados, portanto, há um estouro no ambiente Teradata. Portanto, isso não é aplicado a esses tipos de dados. Veja o exemplo a seguir: