SnowConvert AI - Oracle - Tipos de dados internos do Oracle¶
Tipos de dados estendidos¶
Descrição¶
A partir do Oracle Database 12_c\_, você pode especificar um tamanho máximo de 32767 bytes para os tipos de dados
VARCHAR2,NVARCHAR2eRAW. Você pode controlar se o banco de dados suporta esse novo tamanho máximo definindo o parâmetro de inicializaçãoMAX_STRING_SIZE.Um tipo de dados
VARCHAR2ouNVARCHAR2com tamanho declarado superior a 4000 bytes, ou um tipo de dadosRAWcom tamanho declarado superior a 2000 bytes, é um tipo de dados estendido. (Tipo de dados estendido da referência de linguagem Oracle SQL).
O Oracle permite aumentar o tamanho máximo da cadeia de caracteres do banco de dados de STANDARD para EXTENDED, no entanto, o Snowflake não contém um equivalente para essa funcionalidade.
Portanto, os tipos de dados estendidos VARCHAR2, NVARCHAR2 e RAW não são compatíveis com o Snowflake e são transformados apenas como tipos de dados VARCHAR2, NVARCHAR2 e RAW regulares. Consulte Tipos de dados de caractere e Tipos de dados RAW para obter mais informações.
Problemas conhecidos¶
1. MAX STRING SIZE not recognized¶
ALTER SYSTEM SET MAX_STRING_SIZE='EXTENDED';
Não está sendo analisado pelo SnowConvert.
Tipo de dados JSON¶
Descrição¶
O Oracle Database suporta o JSON nativamente com recursos de banco de dados relacional, incluindo transações, indexação, consultas declarativas e visualizações. Ao contrário dos dados relacionais, os dados JSON podem ser armazenados no banco de dados, indexados e consultados sem a necessidade de um esquema que defina os dados. (Tipo de dados JSON da referência de linguagem Oracle SQL).
The JSON data types are transformed to VARIANT to emulate the Oracle behavior.
Amostra de padrões da origem¶
Tipo de dados JSON como uma coluna em Create Table¶
Oracle¶
Resultado¶
COL1 |
|---|
{«id»:1,»content»:»json content»} |
{«stringdata»:»this is a text»,»number»:1,»numberNeg»:-1,»booleanT»:true,»booleanGF»:false,»nullvalue»:null,»object»:{«1»:1,»2»:2},»array»:[1,2,3]} |
{«id»:4} |
Snowflake¶
Aviso
As inserções de dados JSON não estão sendo tratadas corretamente. Consulte a seção Recomendações para soluções alternativas.
Problemas conhecidos¶
1. Inserções de dados JSON
As inserções de dados JSON não estão sendo tratadas corretamente pelo SnowConvert.
2. Manipulação de objetos JSON
Os usos de objetos JSON (colunas, variáveis ou parâmetros) não são convertidos corretamente pelo SnowConvert AI. Consulte a seção Recomendações para soluções alternativas
Recomendações¶
1. JSON Data Type translation workaround¶
O tipo de dados JSON é convertido para VARIANT, de modo que as informações podem ser formatadas usando a do função Snowflake PARSE_JSON. Essa abordagem permitirá que você armazene, consulte e opere os dados do JSON no Snowflake usando uma sintaxe semelhante à do Oracle.
Oracle¶
Resultado 1¶
JSON_SERIALIZE(JSON_COLUMN) |
|---|
{«id»:1,»content»:»json content»} |
{«id»:2,»content»:{«header»:»header text one»,»content»:»content text one»}} |
{«id»:3,»content»:{«header»:»header tex two»,»content»:»content text two»}} |
Resultado 2¶
“ID:” JT.JSON_COLUMN.ID |
“HEADER:” UPPER(JT.JSON_COLUMN.CONTENT.HEADER) |
|---|---|
ID: 1 |
HEADER: |
ID: 2 |
HEADER: «HEADER TEXT ONE» |
ID: 3 |
HEADER: «HEADER TEX TWO» |
Snowflake¶
Resultado 1¶
JSON_COLUMN |
|---|
{ «content»: «json content», «id»: 1} |
{ «content»: { «content»: «content text one», «header»: «header text one» }, «id»: 2} |
{ «content»: { «content»: «content text two», «header»: «header tex two» }, «id»: 3} |
Resultado 2¶
“ID: “ JT.JSON_COLUMN:ID |
“HEADER: “ UPPER(JT.JSON_COLUMN:CONTENT:HEADER) |
|---|---|
ID: 1 |
|
ID: 2 |
HEADER: HEADER TEXT ONE |
ID: 3 |
HEADER: HEADER TEX TWO |
Nota
Você deve usar SELECT como o argumento INSERT INTO em vez da cláusula VALUES para usar a função PARSE_JSON.
Nota
Use o operador “:” em vez de “.” para acessar as propriedades do objeto JSON. Ele permite vários níveis de aninhamento em ambos os mecanismos.
EWIs relacionados¶
SSC-EWI-0073: Revisão de equivalência funcional pendente
Tipo de dados LONG¶
LONGarmazena cadeias de caracteres de comprimento variável contendo até 2 gigabytes -1, ou 231-1 bytes. As colunasLONGtêm muitas das características das colunasVARCHAR2. Você pode usar as colunasLONGpara armazenar sequências de texto longas. O comprimento dos valores deLONGpode ser limitado pela memória disponível em seu computador. (Tipo de dados Long da referência de linguagem Oracle SQL)
Amostra de padrões da origem¶
Long em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados de uma coluna Long¶
Oracle¶
Resultado¶
LONG_COLUMN |
|---|
isto é um texto |
Snowflake¶
Resultado¶
LONG_COLUMN |
|---|
isto é um texto |
Problemas conhecidos¶
1. The max length of long (Oracle) and varchar (Snowflake) are different¶
De acordo com a documentação do Oracle, a coluna Long pode armazenar até 2 gigabytes de dados, mas o varchar do Snowflake é limitado a 16 Mb.
2. Cast of Long column¶
The Long data type can only be cast to a CLOB data type by using the TO_LOB function. This function only works when used in the select list of a subquery in an INSERT statement. Consider the following sample
Oracle¶
Aviso
Se o tipo de dados da coluna da tabela de destino for diferente de CLOB, o Oracle poderá inserir valores nulos ou exibir um erro ao tentar inserir os dados.
EWIs relacionados¶
SSC-FDM-0006: a coluna do tipo Number pode não se comportar da mesma forma no Snowflake.
Tipos de dados RAW e LONG RAW¶
Descrição¶
Os tipos de dados
RAWeLONGRAWarmazenam dados que não devem ser convertidos explicitamente pelo Oracle Database ao mover dados entre sistemas diferentes. Esses tipos de dados são destinados a dados binários ou cadeias de bytes. (Tipos de dados brutos Row e Long da referência de linguagem Oracle SQL)
Amostra de padrões da origem¶
Raw e Long Raw em Create Table¶
Oracle¶
Snowflake CREATE OR REPLACE TABLE raw_table¶
Recuperação de dados da coluna Raw e Long Raw¶
Oracle¶
Resultado¶
ID |
RAW_COLUMN |
LONG_RAW_COLUMN |
|---|---|---|
1 |
ªº««««© 2 B7 :ºººº«ºª»¬ßý |
|
2 |
ªªªªª |
«««««««««««««««««««ªººªºººººººººº |
3 |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
Snowflake¶
Resultado¶
ID |
RAW_COLUMN |
LONG_RAW_COLUMN |
|---|---|---|
1 |
ªº««««© 2 B7 :ºººº«ºª»¬ßý |
|
2 |
ªªªªª |
«««««««««««««««««««ªººªºººººººººº |
3 |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
Tipos de dados numéricos¶
Descrição¶
Os tipos de dados numéricos do Oracle Database armazenam números fixos e de ponto flutuante positivos e negativos, zero, infinito e valores que são o resultado indefinido de uma operação, “não é um número” ou
NAN. (Tipos de dados numéricos de referência da linguagem Oracle)
Notas sobre operações aritméticas¶
Esteja ciente de que toda operação realizada em tipos de dados numéricos é armazenada internamente como um número. Além disso, dependendo da operação executada, é possível incorrer em um erro relacionado à forma como os valores intermediários são armazenados no Snowflake. Para mais informações, consulte postagem do Snowflake sobre números intermediários no Snowflake.
Tipo de dados FLOAT¶
Descrição¶
O tipo de dados
FLOATé um subtipo deNUMBER. Ele pode ser especificado com ou sem precisão, que tem a mesma definição deNUMBERe pode variar de 1 a 126. A escala não pode ser especificada, mas é interpretada a partir dos dados. (Tipo de dados Float da referência de linguagem Oracle)
Aviso
Notes on arithmetic operations
Lembre-se de que toda operação realizada em tipos de dados numéricos é armazenada internamente como um número. Além disso, dependendo da operação realizada, é possível incorrer em um erro relacionado à forma como os valores intermediários são armazenados no Snowflake. Para obter mais informações, consulte esta postagem sobre números intermediários no Snowflake.
Amostra de padrões da origem¶
Considere a tabela a seguir e suas inserções para os exemplos abaixo:
Tipo de dados Float em Create Table¶
Oracle¶
Snowflake¶
FLOAT¶
Não há diferenças entre o Oracle e o Snowflake com relação ao tipo de dados FLOAT sem precisão.
Oracle¶
Resultado¶
col1 |
|---|
100.55555 |
1.9 |
Snowflake¶
Resultado¶
col1 |
|---|
100.55555 |
1.9 |
FLOAT ( p )¶
Os resultados das consultas podem não ser equivalentes quando a precisão (p) for especificada no tipo de dadosFLOAT. Há pequenas diferenças de arredondamento.
Oracle¶
Resultado¶
col2 |
|---|
1,2 |
7,9 |
13 |
120 |
col3 |
—————————————————————————————————- |
1111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000 |
Snowflake¶
Resultado¶
col2 |
|---|
1,23 |
7,89 |
12,79 |
123,45 |
col3 |
—————————————————————————————————- |
1111111111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
Problemas conhecidos¶
1. FLOAT data type with precision¶
Quando o tipo de dados FLOAT tem precisão, os resultados das consultas podem ter pequenas diferenças de arredondamento.
EWIs relacionados¶
Sem EWIs relacionados.
Tipo de dados NUMBER¶
Descrição¶
O tipo de dados
NUMBERarmazena zero, bem como números fixos positivos e negativos com valores absolutos de 1,0 x 10-130 até 1,0 x 10126, mas não incluindo esse valor. Se você especificar uma expressão aritmética cujo valor tenha um valor absoluto maior ou igual a 1,0 x 10126, o Oracle retornará um erro. Cada valor deNUMBERrequer de 1 a 22 bytes. (Tipo de dados Number da referência de linguagem Oracle).
O tipo de dados NUMBER pode ser especificado usando o seguinte formulário NUMBER(p, s) (ambos os parâmetros são opcionais) onde:
pé a precisão **** ou o número máximo de dígitos decimais significativos, em que o dígito mais significativo é o dígito não nulo mais à esquerda e o dígito menos significativo é o dígito conhecido mais à direita. A precisão pode variar de 0 a 38.sé a escala ou o número de dígitos do ponto decimal até o dígito menos significativo. A escala pode variar de -84 a 127.
No Oracle, não especificar a precisão (usando NUMBER ou NUMBER(*)) faz com que a coluna seja criada como uma «precisão indefinida». Isso significa que o Oracle armazenará valores dinamicamente, permitindo armazenar qualquer número nessa coluna. O Snowflake não oferece suporte a essa funcionalidade; por esse motivo, eles serão alterados para NUMBER(38, 18), permitindo armazenar a mais ampla variedade de números.
Aviso
Notes on arithmetic operations
Esteja ciente de que toda operação realizada em tipos de dados numéricos é armazenada internamente como um número. Além disso, dependendo da operação realizada, é possível incorrer em um erro relacionado à forma como os valores intermediários são armazenados no Snowflake. Para mais informações, consulte esta postagem do Snowflake sobre números intermediários no Snowflake ou consulte a mensagem de equivalência funcional SSC-FDM-0006.
Amostra de padrões da origem¶
Considere a tabela a seguir e suas inserções para os exemplos abaixo:
Tipos de dados Number em Create Table¶
Oracle¶
Snowflake¶
NUMBER ( caso padrão )¶
Quando a precisão e a escala não são especificadas, os valores padrão são os máximos disponíveisNUMBER(38, 127). A transformação atual para o caso padrão é NUMBER(38,19).
Aviso
No Oracle, a não definição de Precision nem de Scale tem como padrão «Undefined Precision and Scale». Ele se comporta armazenando a entrada «como recebida», o que significa que pode lidar com números inteiros e de ponto flutuante. Usamos 38, 18 para tentar cobrir ambos, usando 20 para números inteiros e deixando 18 para dígitos de ponto flutuante.
Oracle¶
Resultado¶
col1 |
|---|
100 |
Snowflake¶
Resultado¶
col1 |
|---|
100,0000000000000000000 |
NUMBER ( p )¶
Nesse caso, a precisão especificará o número de dígitos que o número pode ter à esquerda do ponto decimal.
Oracle¶
Resultado¶
col2 |
|---|
2 |
Snowflake¶
Resultado¶
col2 |
|---|
2 |
NUMBER ( p, s ) p > s¶
No caso de s ser menor que p, a precisão especificará o número de dígitos que o número pode ter. A escala especificará o número de dígitos significativos à direita do ponto decimal, de modo que o número de dígitos à esquerda do ponto decimal dependerá da escala especificada.
Oracle¶
Resultado¶
col3 |
|---|
12345,12345 |
Snowflake¶
Resultado¶
col3 |
|---|
12345,12345 |
NUMBER ( p, -s )¶
Uma escala negativa é o número de dígitos significativos à esquerda do ponto decimal, até o dígito menos significativo, mas não o incluindo. Para a escala negativa, o dígito menos significativo está no lado esquerdo do ponto decimal, porque os dados reais são arredondados para o número especificado de casas à esquerda do ponto decimal. A transformação atual é para remover a escala negativa.
Oracle¶
Resultado¶
col4 |
|---|
16400 |
17600 |
Snowflake¶
Resultado¶
col4 |
|---|
16431 |
17551 |
NUMBER ( p, s ) s > p¶
Quando a escala for maior do que a precisão, considere os seguintes aspectos:
O número a ser inserido não pode ter dígitos significativos à esquerda do ponto decimal. Apenas zero está disponível.
O primeiro dígito à direita do ponto decimal deve ser zero.
A precisão especifica o número máximo de dígitos significativos à direita do ponto decimal.
Oracle¶
Resultado¶
col5 |
|---|
0,00009 |
0,00002 |
0,01268 |
Snowflake¶
Resultado¶
col5 |
|---|
0,00009 |
0,00002 |
0,01268 |
Problemas conhecidos¶
1. Scale value exceeds the maximum allowed by Snowflake¶
Ao especificar uma escala maior que o máximo permitido no Snowflake (37), ela é alterada para 18. Para obter mais informações sobre isso, acesse a documentação SSC-FDM-0006.
2. Negative scale¶
O Snowflake não permite escala negativa, por isso está sendo removido. Isso podia causar inequivalência funcional. Para obter mais informações sobre isso, acesse a documentação SSC-EWI-0R0092.
Recomendações¶
1. UDF for NUMBER datatype Operations¶
É possível migrar essas operações manualmente usando o próximo UDF ao realizar operações aritméticas para evitar os problemas observados:
UDF¶
EWIs relacionados¶
SSC-EWI-OR0092 A escala negativa do tipo de dados numéricos foi removida da saída.
SSC-FDM-0006: a coluna do tipo Number pode não se comportar da mesma forma no Snowflake.
SSC-FDM-OR0010 A precisão menor do tipo de dados numéricos foi aumentada para corresponder à escala.
Números de ponto flutuante¶
Descrição¶
Os números de ponto flutuante podem ter um ponto decimal em qualquer parte do primeiro até o último dígito, ou podem não ter ponto decimal nenhum. Um expoente pode opcionalmente ser usado seguindo o número para aumentar o intervalo, por exemplo, 1,777 e-20. Um valor de escala não é aplicável aos números de ponto flutuante, porque o número de dígitos que podem aparecer após o ponto decimal não é restrito. Os números de ponto flutuante binários são armazenados usando precisão binária (os dígitos 0 e 1) (Números de ponto flutuante da referência de linguagem Oracle)
BINARY_DOUBLE¶
Descrição¶
BINARY_DOUBLEé um tipo de dados de número de ponto flutuante de precisão dupla de 64 bits. Cada valor deBINARY_DOUBLErequer 8 bytes. Em uma colunaBINARY_DOUBLE, os números de ponto flutuante têm precisão binária. Os números de ponto flutuante binário suportam os valores especiais infinito eNaN(não é um número). (Tipo de dados Binary_Double do Oracle)
É possível especificar números de ponto flutuante dentro dos limites a seguir:
Valor finito positivo máximo = 1.79769313486231E+308
Valor finito mínimo positivo = 2.22507485850720E-308
Amostra de padrões da origem¶
Considere a tabela a seguir e suas inserções para o exemplo abaixo:
Binary Double em Create Table¶
Oracle¶
Snowflake¶
Nota
“NaN” significa _ Não é um número _, esse valor é permitido pelo tipo de dadosBINARY_DOUBLE no Oracle e pelo tipo de dadosFLOATno Snowflake.
BINARY_DOUBLE -> FLOAT¶
Como o tipo de dadosBINARY_DOUBLEnão é compatível com o Snowflake, ele está sendo convertido para FLOAT.
Oracle¶
Resultado¶
col1 |
|---|
0 |
179769313486231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
NaN |
Snowflake¶
Resultado¶
col1 |
|---|
0 |
179769313486231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
NaN |
Problemas conhecidos¶
1. The BINARY_DOUBLE data type is not supported by Snowflake¶
O tipo de dados BINARY_DOUBLE é convertido para FLOAT, pois não é compatível com o Snowflake.
EWIs relacionados¶
Sem EWIs relacionados.
BINARY_FLOAT¶
Descrição¶
BINARY_FLOATé um tipo de dados de número de ponto flutuante de precisão única de 32 bits. Cada valor deBINARY_FLOATrequer 4 bytes. Em uma colunaBINARY_FLOAT, os números de ponto flutuante têm precisão binária. Os números de ponto flutuante binário suportam os valores especiais infinito eNaN(não é um número). (Tipo de dados Binary_Float do Oracle)
É possível especificar números de ponto flutuante dentro dos limites a seguir:
Valor finito positivo máximo = 3.40282E+38F
Valor finito mínimo positivo = 1.17549E-38F
Amostra de padrões da origem¶
Considere a tabela a seguir e suas inserções para o exemplo abaixo:
Binary Float em Create Table¶
Oracle¶
Snowflake¶
Nota
“NaN” significa _ Não é um número _, esse valor é permitido pelo tipo de dadosBINARY_FLOAT no Oracle e pelo tipo de dadosFLOATno Snowflake.
BINARY_FLOAT -> FLOAT¶
Como o tipo de dadosBINARY_FLOATnão é compatível com o Snowflake, ele está sendo convertido para FLOAT.
Oracle¶
Resultado¶
col1 |
|---|
0 |
340282001837565600000000000000000000000 |
NaN |
Snowflake¶
Resultado¶
col1 |
|---|
0 |
340282000000000000000000000000000000000 |
NaN |
Problemas conhecidos¶
1. The BINARY_FLOAT data type is not supported by Snowflake¶
O tipo de dados BINARY_FLOAT é convertido para FLOAT, pois não é compatível com o Snowflake.
EWIs relacionados¶
Sem EWIs relacionados.
Tipos de dados Datetime e Interval¶
Os tipos de dados datetime são
DATE,TIMESTAMP,TIMESTAMPWITHTIMEZONEeTIMESTAMPWITHLOCALTIMEZONE. Os valores de tipos de dados datetime às vezes são chamados de datetimes. Os tipos de dados de intervalo sãoINTERVALYEARTOMONTHeINTERVALDAYTOSECOND. Os valores de tipos de dados interval às vezes são chamados de intervals. (Tipos de dados Datetime e Interval da referência de linguagem Oracle SQL)
Tipo de dados DATE¶
Descrição¶
O tipo de dados de data da Oracle armazena informações de data e hora, mas o tipo de dados de data do Snowflake armazena apenas informações de data. (Tipo de dados de data da referência de linguagem Oracle SQL)
The default transformation for Oracle DATE is to Snowflake TIMESTAMP. You can add the disableDateAsTimestamp flag (SnowConvert AI Command Line Interface) or disable the Transform Date as Timestamp setting (SnowConvert AI desktop application) to transform the DATE type to TIMESTAMP. Keep in mind that Snowflake DATE only stores date information and Oracle stores date and time information, if you want to avoid losing information you should transform DATE to TIMESTAMP.
Nota
Diferença importante de comportamento de arredondamento: ao realizar operações entre os tipos de dados date/timestamp e intervalos envolvendo segundos, o Oracle não arredonda os segundos, mas preserva a precisão conforme especificado, enquanto o Snowflake arredonda os segundos para o segundo inteiro mais próximo. Essa diferença no comportamento de arredondamento pode levar a resultados diferentes.
Amostra de padrões da origem¶
Date em Create Table¶
Oracle¶
Snowflake sem sinalizador –disableDateAsTimestamp ou com a configuração «Transform Date as Timestamp» ativada¶
Snowflake com sinalizador –disableDateAsTimestamp ou com a configuração «Transform Date as Timestamp» desativada¶
Recuperação de dados de uma coluna Date¶
Oracle¶
Resultado¶
DATE_COL |
|---|
2010-10-10 00:00:00.000 |
Snowflake¶
Resultado¶
DATE_COL |
|---|
2010-10-10 00:00:00.000 |
Resultado com sinalizador disableDateAsTimestamp¶
DATE_COL |
|---|
2010-10-10 |
Problemas conhecidos¶
1. Input and output format may differ between languages¶
No Snowflake, os formatos de entrada e saída DATE dependem das variáveis de sessão DATE_INPUT_FORMAT e DATE_OUTPUT_FORMAT. As inserções podem falhar porque DATE_INPUT_FORMAT obriga o usuário a usar um formato específico quando uma data é adicionada por texto. Você pode modificar essas variáveis usando a seguinte sintaxe.
EWIs relacionados¶
SSC-FDM-OR0042: o tipo Date transformado em Timestamp tem um comportamento diferente
Tipo de dados INTERVALDAYTOSECOND¶
Descrição¶
INTERVAL DAY TO SECOND armazena um período de tempo em termos de dias, horas, minutos e segundos. (Tipo de dados INTERVAL DAY TO SECOND da referência de linguagem Oracle SQL)
By default, there is no equivalent for this data type in Snowflake and it is transformed to VARCHAR.
Nota
Preview Feature: When the --UseIntervalDatatype preview flag is enabled, Oracle INTERVAL DAY TO SECOND columns are preserved as native Snowflake INTERVAL DAY TO SECOND types. See the Interval Data Types translation reference for complete transformation details.
Amostra de padrões da origem¶
Interval Day to Second em Create Table¶
Oracle¶
Snowflake¶
The Interval value is transformed to a supported Snowflake format and then inserted as text inside the column. Since Snowflake does not support Interval as a data type, it is only supported in arithmetic operations. To use the value, it needs to be extracted and used as an Interval constant (if possible).
Valor original Oracle: INTERVAL '1 2:3:4.567' DAY TO SECOND
Valor armazenado na coluna Snowflake: '1d, 2h, 3m, 4s, 567ms'
Valor como constante do Snowflake Interval: INTERVAL '1d, 2h, 3m, 4s, 567ms'
Recuperação de dados de uma coluna Interval Day to Second¶
Oracle¶
Resultado¶
INTERVAL_DAY_COL1 |
INTERVAL_DAY_COL2 |
|---|---|
1 2:3:4.567 |
|
1 2:3:4.567 |
Snowflake¶
Resultado¶
INTERVAL_DAY_COL1 |
INTERVAL_DAY_COL2 |
|---|---|
1d, 2h, 3m, 4s, 56ms |
|
1d, 2h, 3m, 4s, 56ms |
Problemas conhecidos¶
1. Only arithmetic operations are supported¶
Os intervalos do Snowflake têm várias limitações. Somente operações aritméticas entre DATE ou TIMESTAMP e constantes de intervalo são suportadas; qualquer outro cenário não é suportado.
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
Tipo de dados INTERVALYEARTOMONTH¶
Descrição¶
INTERVAL YEAR TO MONTH armazena um período de tempo usando os campos de data e hora YEAR e MONTH. Como não há equivalente no Snowflake, ele é transformado em Varchar (Tipo de dados INTERVAL YEAR TO MONTH da referência de linguagem Oracle SQL)
By default, there is no equivalent for this data type in Snowflake and it is transformed to VARCHAR.
Nota
Preview Feature: When the --UseIntervalDatatype preview flag is enabled, Oracle INTERVAL YEAR TO MONTH columns are preserved as native Snowflake INTERVAL YEAR TO MONTH types. See the Interval Data Types translation reference for complete transformation details.
Amostra de padrões da origem¶
Interval Year To Month em Create Table¶
Oracle¶
Snowflake¶
The Interval value is transformed to a supported Snowflake format and then inserted as text inside the column. Since Snowflake does not support Interval as a data type, it is only supported in arithmetic operations. To use the value, it needs to be extracted and used as an Interval constant (if possible).
Valor original Oracle: INTERVAL '1-2' YEAR TO MONTH
Valor armazenado na coluna Snowflake: '1y, 2m'
Valor como constante do Snowflake Interval: INTERVAL '1y, 2m'
Recuperação de dados de uma coluna Interval Year To Month¶
Oracle¶
Resultado¶
INTERVAL_YEAR_COL1 |
INTERVAL_YEAR_COL2 |
|---|---|
1-2 |
|
1000-11 |
Snowflake¶
Resultado¶
INTERVAL_YEAR_COL1 |
INTERVAL_YEAR_COL2 |
|---|---|
1y, 2m |
Problemas conhecidos¶
1. Only arithmetic operations are supported¶
Os intervalos do Snowflake têm várias limitações. Somente operações aritméticas entre DATE ou TIMESTAMP e constantes de intervalo são suportadas; qualquer outro cenário não é suportado.
EWIs relacionados¶
SSC-EWI-0036: Tipo de dados convertido em outro tipo de dados.
Tipo de dados TIMESTAMP¶
Descrição¶
O tipo de dados TIMESTAMP é uma extensão do tipo de dados DATE. Ele armazena o ano, o mês e o dia do tipo de dados DATE, além dos valores de hora, minuto e segundo. (Tipo de dados Timestamp da referência de linguagem Oracle SQL)
Os tipos de dados Oracle e Snowflake TIMESTAMP têm o mesmo intervalo de precisão (0-9), mas valores padrão diferentes. No Oracle, o valor de precisão padrão é 6 e no Snowflake é 9.
No entanto, há uma diferença de comportamento quando um valor inserido excede a precisão definida. O Oracle arredonda as casas decimais excedentes, enquanto o Snowflake apenas apara os valores.
Amostra de padrões da origem¶
Timestamp em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados de uma coluna Timestamp¶
Oracle¶
Resultado¶
TIMESTAMP_COL1 |
TIMESTAMP_COL2 |
|---|---|
2010-10-10 12:00:00.000 |
2010-10-10 12:00:00.000 |
Snowflake¶
Resultado¶
TIMESTAMP_COL1 |
TIMESTAMP_COL2 |
|---|---|
2010-10-10 12:00:00.000 |
2010-10-10 12:00:00.000 |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
Sem EWIs relacionados.
Tipo de dados TIMESTAMPWITHLOCALTIMEZONE¶
Descrição¶
Ele difere de TIMESTAMP WITH TIME ZONE porque os dados armazenados no banco de dados são normalizados para o fuso horário do banco de dados e as informações sobre o fuso horário não são armazenadas como parte dos dados da coluna. (Tipo de dados Timestamp with Local Time Zone Data da referência de linguagem Oracle SQL)
O equivalente ao Snowflake é TIMESTAMP_LTZ.
Para obter mais informações, consulte também a seção TIMESTAMP.
Amostra de padrões da origem¶
Timestamp with Time Zone em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados de uma coluna Timestamp com fuso horário local¶
Oracle¶
Resultado¶
TIMESTAMP_COL1 |
|---|
2010-10-10 18:00:00.000 |
2010-10-10 20:00:00.000 |
Snowflake¶
Resultado¶
TIMESTAMP_COL1 |
|---|
2010-10-10 12:00:00.000 -0700 |
2010-10-10 12:00:00.000 -0700 |
Nota
Observe que os resultados são diferentes nos dois mecanismos porque cada banco de dados é definido com um fuso horário diferente. O fuso horário do Oracle é «+00:00» e o fuso horário do Snowflake é «America/Los_Angeles».
Use a seguinte sintaxe para alterar o fuso horário padrão do banco de dados:
Problemas conhecidos¶
1. Default database timezone¶
As operações com esse tipo de dados serão afetadas pelo fuso horário do banco de dados e os resultados podem ser diferentes. Você pode verificar o fuso horário padrão usando as seguintes consultas:
Oracle¶
Snowflake¶
2. Oracle Timestamp with local timezone behavior¶
When operating timestamps with local timezone data types, Oracle converts the timestamps to the default timezone of the database. To emulate this behavior in Snowflake, the TIMESTAMP_TYPE_MAPPING session parameter should be set to “TIMESTAMP_LTZ”.
3. Timestamp formats may be different¶
O SnowConvert não realiza nenhuma conversão para as cadeias de formato de data/carimbo de data/hora, portanto, pode haver erros ao implantar o código. Exemplo:
Oracle¶
Snowflake¶
Aviso
The query will fail in Snowflake because the default timestamp input format does not recognize “-8:00” as a valid UTC offset. It should be replaced with “0800” or “-08:00” to get the same result.
EWIs relacionados¶
Sem EWIs relacionados.
Tipo de dados TIMESTAMPWITHTIMEZONE¶
Descrição¶
TIMESTAMP WITH TIME ZONE é uma variante de TIMESTAMP que inclui um nome de região de fuso horário ou um deslocamento de fuso horário em seu valor. O equivalente no Snowflake é TIMESTAMP_TZ. (Tipo de dados Timestamp com Time Zone da referência de linguagem Oracle SQL)
O equivalente ao Snowflake é TIMESTAMP_TZ.
Para obter mais informações, consulte também a seção TIMESTAMP.
Amostra de padrões da origem¶
Timestamp with Time Zone em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados de uma coluna Timestamp with Time Zone¶
Oracle¶
Resultado¶
TIMESTAMP_COL1 |
|---|
2010-10-10 12:00:00.000 -0600 |
Snowflake¶
Resultado¶
TIMESTAMP_COL1 |
|---|
2010-10-10 12:00:00.000 -0700 |
Nota
Observe que o fuso horário é diferente nos dois mecanismos porque, quando o fuso horário não é especificado, o fuso horário padrão do banco de dados é adicionado.
Use a seguinte sintaxe para alterar o fuso horário padrão do banco de dados:
Problemas conhecidos¶
1. Timestamp formats may be different¶
O SnowConvert não realiza nenhuma conversão para as cadeias de formato de data/carimbo de data/hora, portanto, pode haver erros ao implantar o código. Exemplo:
Oracle¶
Snowflake¶
Aviso
The query will fail in Snowflake because the default timestamp input format does not recognize “-8:00” as a valid UTC offset. It should be replaced with “-0800” or “-08:00” to get the same result.
EWIs relacionados¶
Sem EWIs relacionados.
Aritmética de datetime¶
Este conteúdo explica a transformação atual de algumas operações aritméticas entre tipos datetime.
Descrição¶
No Oracle, algumas operações aritméticas podiam ser realizadas entre tipos DateTime, como adição, subtração, multiplicação e divisão. Atualmente, o SnowConvert AI pode resolver alguns casos de adição e subtração. Estes casos são explicados abaixo.
Amostra de padrões da origem¶
Este é um resumo da transformação atual para as diferentes combinações das operações de adição e subtração com data, carimbos de data/hora, número e tipos desconhecidos.
Nota
Consulte a próxima tabela para os exemplos abaixo.
Oracle¶
Snowflake¶
Adição¶
Matriz de combinação¶
Este é um resumo de como o migrador resolve as operações de adição para as diferentes combinações com data, carimbos de data/hora, número e tipos desconhecidos.
Adição |
Data |
Carimbo de data/hora |
Número |
Intervalo |
Desconhecido |
Float |
|---|---|---|---|---|---|---|
Data |
INVALID |
INVALID |
Data + dia de intervalo |
Data + intervalo IntervalUnit |
DATEADD_UDF |
DATEADD_UDF |
Carimbo de data/hora |
INVALID |
INVALID |
Carimbo de data/hora + dia de intervalo |
Carimbo de data/hora + intervalo IntervalUnit |
DATEADD_UDF |
DATEADD_UDF |
Número |
Data + dia de intervalo |
Carimbo de data/hora + dia de intervalo |
Número + Número |
INVALID |
Número + float |
|
Intervalo |
Data + intervalo IntervalUnit |
Carimbo de data/hora + intervalo IntervalUnit |
INVALID |
Desconhecido + intervalo IntervalUnit |
INVALID |
|
Desconhecido |
DATEADD_UDF |
DATEADD_UDF |
Desconhecido + número |
Desconhecido + intervalo IntervalUnit |
||
Float |
DATEADD_UDF |
DATEADD_UDF |
Float + número |
INVALID |
Float + float |
Nota
An Unknown Type column is the result of the migrator being unable to establish the data type that the column contains. This can happen for many reasons, for example, missing DDLs for the tables being operated on, or columns resulting from operations on views, CTEs, or subqueries.
Aviso
By default, Snow Convert migrates operations of type Date/Timestamp + Interval to the native Snowflake operations, but in some cases may be useful to use UDF instead. For further details, see Interval UDFs vs. Snowflake native interval operation.
Os diferentes caminhos que o migrador pode usar para resolver as operações de adição serão explicados abaixo:
Inválido¶
Certas combinações não são válidas para realizar operações de adição no Oracle:
Oracle¶
Resultado¶
Data + dia de intervalo¶
Esta é a transformação atual para a operação de adição entre um tipo de data e um número (e vice-versa). Por exemplo
Oracle¶
Resultado¶
ASDATE+1 |
|---|
2021-11-07 00:00:00.000 |
1+ASDATE |
|---|
2021-11-07 00:00:00.000 |
Snowflake¶
Resultado¶
ASDATE + INTERVAL “1 DAY” |
|---|
2021-11-07 |
Carimbo de data/hora + dia de intervalo¶
Esta é a transformação atual para a operação de adição entre um tipo de carimbo de data/hora e um número (e vice-versa). Por exemplo
Oracle¶
Resultado¶
ASTIMESTAMP+1 |
|---|
2021-11-06 11:00:00.000 |
1+ASTIMESTAMP |
|---|
2021-11-06 11:00:00.000 |
Nota
Nota: No Oracle, as colunas DATE e TIMESTAMP contêm um componente de hora, mas o Oracle usou a máscara de formato especificada pelo parâmetro NLS_DATE_FORMAT para decidir como converter implicitamente a data em uma cadeia de caracteres; é por isso que, ao realizar algumas operações, entre TIMESTAMP e intervalos, o resultado poderia ser mostrado como DATE, ocultando o componente de hora, a menos que o parâmetro NLS_DATE_FORMAT seja alterado.
Snowflake¶
Resultado¶
ASTIMESTAMP + INTERVAL “1 DAY” |
|---|
2021-11-06 11:00:00.000 |
DATEADD_UDF¶
For those cases where there is an addition operation between a date or timestamp type and an unknown type, a user-defined function (UDF) is added. See the DATEADD_UDF implementation for details. The UDF is located in the UDFs folder. For example:
Nota
Para os exemplos a seguir, será usada uma subconsulta, tentando simular a coluna de tipo desconhecido
Oracle¶
Resultado¶
ASDATE+(SELECTEXTRACT(DAYFROMASTIMESTAMPTWO)FROMTIMES) |
|---|
2021-11-11 00:00:00.000 |
ASTIMESTAMP+(SELECTEXTRACT(DAYFROMASTIMESTAMPTWO)FROMTIMES) |
|---|
2021-11-10 11:00:00.000 |
Snowflake¶
Resultado¶
PUBLIC.DATEADD_UDF( ASDATE, (SELECT EXTRACT(DAY FROM ASTIMESTAMPTWO) FROM PUBLIC.TIMES)) |
|---|
2021-11-11 |
PUBLIC.DATEADD_UDF( ASTIMESTAMP, (SELECT EXTRACT(DAY FROM ASTIMESTAMPTWO) FROM PUBLIC.TIMES)) |
|---|
2021-11-10 11:00:00.000 |
Subtração¶
Matriz de combinação¶
Subtração |
Data |
Carimbo de data/hora |
Número |
Intervalo |
Desconhecido |
Float |
|---|---|---|---|---|---|---|
Data |
DATEDIFF |
TIMESTAMP_DIFF___UDF |
Data - dia de intervalo |
Data - intervalo IntervalUnit |
DATEDIFF_UDF |
DATEDIFF_UDF |
Carimbo de data/hora |
TIMESTAMP_DIFF___UDF |
TIMESTAMP_DIFF___UDF |
Carimbo de data/hora - dia de intervalo |
Carimbo de data/hora - intervalo IntervalUnit |
DATEDIFF_UDF |
DATEDIFF_UDF |
Número |
INVALID |
INVALID |
Número - número |
INVALID |
Número - flutuante |
|
Intervalo |
INVALID |
INVALID |
INVALID |
Desconhecido - intervalo IntervalUnit |
NOT SUPPORTED IN ORACLE |
|
Desconhecido |
DATEDIFF_UDF |
DATEDIFF_UDF |
Desconhecido - intervalo IntervalUnit |
|||
Float |
DATEDIFF_UDF |
DATEDIFF_UDF |
Float - número |
NOT SUPPORTED IN ORACLE |
Float - float |
Nota
An Unknown Type column is the result of the migrator being unable to establish the data type that the column contains. This can happen for many reasons, for example, missing DDLs for the tables being operated on, or columns resulting from operations on views, CTEs, or subqueries.
Aviso
By default, Snow Convert migrates operations of type Date/Timestamp + Interval to the native Snowflake operations, but in some cases may be useful to use UDF instead. For further details, see Interval UDFs vs. Snowflake native interval operation.
Os diferentes caminhos que o migrador pode usar para resolver as operações de subtração serão explicados abaixo:
Inválido¶
Certas combinações não são válidas para realizar operações de subtração no Oracle:
Oracle¶
Resultado¶
DATEDIFF¶
A subtração entre dois operandos do tipo date é convertida na função DATEDIFF do Snowflake, usando “day” como unidade de tempo (primeiro parâmetro). Por exemplo
Oracle¶
Resultado¶
ASDATE-ASDATETWO |
|---|
1 |
Snowflake¶
Resultado¶
DATEDIFF(DAY, ASDATETWO, ASDATE) |
|---|
1 |
Data - dia de intervalo¶
Esta é a transformação atual para a operação de subtração entre um tipo de data e um número. Por exemplo
Oracle¶
Resultado¶
ASDATE-1 |
|---|
2021-11-05 00:00:00.000 |
ASDATE+-1 |
|---|
2021-11-05 00:00:00.000 |
Snowflake¶
Resultado¶
ASDATE - INTERVAL “1 DAY” |
|---|
2021-11-05 |
ASDATE + INTERVAL “-1 DAY” |
|---|
2021-11-05 |
Carimbo de data/hora - dia de intervalo¶
Esta é a transformação atual da operação de adição entre um tipo de carimbo de data/hora e um número. Por exemplo
Oracle¶
Resultado¶
ASTIMESTAMP-1 |
|---|
2021-11-04 11:00:00.000 |
ASTIMESTAMP+-1 |
|---|
2021-11-04 11:00:00.000 |
Snowflake¶
Resultado¶
ASTIMESTAMP - INTERVAL “1 DAY” |
|---|
2021-11-04 11:00:00.000 |
ASTIMESTAMP + INTERVAL “-1 DAY” |
|---|
2021-11-04 11:00:00.000 |
Nota
Nota: No Oracle, as colunas DATE e TIMESTAMP contêm um componente de hora, mas o Oracle usa a máscara de formato especificada pelo parâmetro NLS_DATE_FORMAT para decidir como converter implicitamente a data em uma cadeia de caracteres; é por isso que, ao realizar algumas operações entre TIMESTAMP e intervalos, o resultado poderia ser mostrado como DATE, ocultando o componente de hora, a menos que o parâmetro NLS_DATE_FORMAT seja alterado.
For more information, see the Oracle NLS_DATE_FORMAT documentation.
TIMESTAMP_DIFF_UDF¶
The subtractions between timestamp types and dates with a timestamp and vice versa; are resolved by inserting the TIMESTAMP_DIFF_UDF user-defined function, (see the TIMESTAMP_DIFF_UDF implementation). For example
Oracle¶
Resultado¶
ASTIMESTAMP-ASTIMESTAMPTWO |
|---|
+000000000 01:00:00.000000 |
ASTIMESTAMP-ASDATETWO |
|---|
+000000000 11:00:00.000000 |
ASDATETWO-ASTIMESTAMP |
|---|
-000000000 11:00:00.000000 |
Snowflake¶
Resultado¶
PUBLIC.TIMESTAMP_DIFF_UDF( ASTIMESTAMP, ASTIMESTAMPTWO) |
|---|
+000000000 01:00:00.00000000 |
PUBLIC.TIMESTAMP_DIFF_UDF( ASTIMESTAMP, ASDATETWO) |
|---|
+000000000 11:00:00.00000000 |
PUBLIC.TIMESTAMP_DIFF_UDF( ASDATETWO, ASTIMESTAMP) |
|---|
-000000000 -11:00:00.00000000 |
DATEDIFF_UDF¶
For those cases where there is an addition operation between a date or timestamp type and an unknown type, a user-defined function (UDF) is added. See the DATEDIFF_UDF implementation, which could be edited to perform what is required. The UDF is located in the UDFs folder. For example:
Oracle¶
Resultado¶
ASDATE-(EXTRACT(DAYFROMASDATE)) |
|---|
2021-10-31 00:00:00.000 |
ASTIMESTAMP-(EXTRACT(DAYFROMASDATE)) |
|---|
2021-10-30 11:00:00.000 |
Snowflake¶
Resultado¶
PUBLIC.DATEDIFF_UDF( ASDATE, (EXTRACT(DAY FROM ASDATE))) |
|---|
2021-10-31 |
PUBLIC.DATEDIFF_UDF( ASTIMESTAMP, (EXTRACT(DAY FROM ASDATE))) |
|---|
2021-10-30 11:00:00.000 |
Casos comuns¶
Aviso: SSC-EWI-OR0036¶
Este aviso é usado para indicar se uma operação de adição ou subtração pode não se comportar corretamente devido aos tipos de dados dos operandos. Isso significa que talvez o resultado da operação no Snowflake não seja funcionalmente equivalente no Oracle. A adição e subtração entre um tipo de data ou numérico e um tipo desconhecido é um dos casos mais comuns. Por exemplo
Oracle¶
Snowflake¶
Este EWI é adicionado em operações em que o tipo de uma coluna não pôde ser resolvido; se o tipo de coluna for INTERVAL e é operado somente com outros intervalos, o EWI será adicionado, mas o código não será comentado. O exemplo a seguir descreve esse comportamento:
Oracle¶
Snowflake¶
Problemas conhecidos¶
1. TIMESTAMP DIFF UDF improvement¶
The TIMESTAMP_DIFF_UDF must be improved to be able to specify the return type. It means adding a third parameter where it is possible to specify the time part, such as day, hour, or month.
2. Built-in functions as operators¶
Atualmente não há gerenciamento para operações de data entre funções internas que retornam tipos de data.
3. Multiple operands¶
Atualmente, não há gerenciamento para operação de data com mais de dois operandos. Isso pode funcionar, mas também podem ocorrer problemas.
4. Comparison operators¶
Currently, there is no management for date operations with comparison operators, such as greater than or less than.
5. Output format¶
O formato do resultado das operações aritméticas poderia ser alterado usando o próximo comando ALTER SESSION SET DATE_OUTPUT_FORMAT = 'DESIRED-FORMAT‘; no Snowflake.
6. Issues in interval operations with seconds precision¶
Some operations may differ in precision, specifically those that include intervals with seconds precision, this is because Oracle rounds depending on the precision, Snowflake’s interval does not support seconds with decimal places, to have the same result, it is necessary to change the second decimal places by milliseconds in intervals considering the rounding that Oracle performs. The following example shows this issue
Oracle¶
Resultado¶
ASTIMESTAMP+INTERVAL’15.6789’SECOND(2,3) |
|---|
2021-11-05 11:00:15.679 |
ASTIMESTAMP+INTERVAL’15.6783’SECOND(2,3) |
|---|
2021-11-05 11:00:15.678 |
Snowflake¶
Resultado¶
ASTIMESTAMP + INTERVAL “15.6789 SECOND” |
|---|
2021-11-05 11:00:16.000 |
ASTIMESTAMP + INTERVAL “15.6783 SECOND” |
|---|
2021-11-05 11:00:16.000 |
ASTIMESTAMP + INTERVAL “15 SECOND, 679 MILLISECOND” |
|---|
2021-11-05 11:00:15.679 |
ASTIMESTAMP + INTERVAL “15 SECOND, 678 MILLISECOND” |
|---|
2021-11-05 11:00:15.678 |
EWIs relacionados¶
SSC-EWI-0108: a subconsulta a seguir corresponde a pelo menos um dos padrões considerados inválidos e pode produzir erros de compilação.
SSC-EWI-OR0036: problemas de resolução de tipos; a operação aritmética pode não se comportar corretamente entre a cadeia de caracteres e a data.
UDFs Interval vs. operação de intervalo nativo do Snowflake¶
Descrição¶
A tabela a seguir mostra uma comparação entre DATEADD_UDF INTERVAL e DATEDIFF_UDF INTERVAL vs a operação nativa do Snowflake para aritmética de intervalo.
Código necessário¶
Para executar as consultas da tabela comparativa, é necessário executar o seguinte código:
Tabela de comparação¶
Oracle¶
Snowflake¶
UDF do Snowflake¶
Resultados¶
Oracle |
Operação do Snowflake |
UDF |
|---|---|---|
2022-12-05 11:00:00.000 |
2022-12-05 11:00:00.000 |
2022-12-05 11:00:00.000 |
2020-10-05 11:00:00.000 |
2020-10-05 11:00:00.000 |
2020-10-05 11:00:00.000 |
2023-12-05 11:00:00.000 |
2023-12-05 11:00:00.000 |
2023-12-05 11:00:00.000 |
2019-10-05 11:00:00.000 |
2019-10-05 11:00:00.000 |
2019-10-05 11:00:00.000 |
2021-12-05 11:00:00.000 |
2021-12-05 11:00:00.000 |
2021-12-05 11:00:00.000 |
2021-10-05 11:00:00.000 |
2021-10-05 11:00:00.000 |
2021-10-05 11:00:00.000 |
2022-01-05 11:00:00.000 |
2022-01-05 11:00:00.000 |
2022-01-05 11:00:00.000 |
2021-09-05 11:00:00.000 |
2021-09-05 11:00:00.000 |
2021-09-05 11:00:00.000 |
2021-11-06 12:00:00.222 |
2021-11-06 12:00:00.222 |
2021-11-06 12:00:00.222 |
2021-11-04 09:59:59.778 |
2021-11-04 09:59:59.778 |
2021-11-04 09:59:59.778 |
2021-11-06 12:10:00.000 |
2021-11-06 12:10:00.000 |
2021-11-06 12:10:00.000 |
2021-11-04 09:50:00.000 |
2021-11-04 09:50:00.000 |
2021-11-04 09:50:00.000 |
2021-11-06 12:00:00.000 |
2021-11-06 12:00:00.000 |
2021-11-06 12:00:00.000 |
2021-11-04 10:00:00.000 |
2021-11-04 10:00:00.000 |
2021-11-04 10:00:00.000 |
2021-11-15 11:00:00.000 |
2021-11-15 11:00:00.000 |
2021-11-15 11:00:00.000 |
2021-10-26 11:00:00.000 |
2021-10-26 11:00:00.000 |
2021-10-26 11:00:00.000 |
2021-11-05 14:05:00.000 |
2021-11-05 14:05:00.000 |
2021-11-05 14:05:00.000 |
2021-11-05 07:55:00.000 |
2021-11-05 07:55:00.000 |
2021-11-05 07:55:00.000 |
2021-11-05 16:00:00.000 |
2021-11-05 16:00:00.000 |
2021-11-05 16:00:00.000 |
2021-11-05 06:00:00.000 |
2021-11-05 06:00:00.000 |
2021-11-05 06:00:00.000 |
2021-11-05 11:05:10.000 |
2021-11-05 11:05:10.000 |
2021-11-05 11:05:10.000 |
2021-11-05 10:54:50.000 |
2021-11-05 10:54:50.000 |
2021-11-05 10:54:50.000 |
2021-11-05 11:30:00.000 |
2021-11-05 11:30:00.000 |
2021-11-05 11:30:00.000 |
2021-11-05 10:30:00.000 |
2021-11-05 10:30:00.000 |
2021-11-05 10:30:00.000 |
2021-11-19 08:00:00.000 |
2021-11-19 08:00:00.000 |
2021-11-19 08:00:00.000 |
2021-10-22 14:00:00.000 |
2021-10-22 14:00:00.000 |
2021-10-22 14:00:00.000 |
2021-11-05 11:00:15.679 |
2021-11-05 11:00:16.000 |
2021-11-05 11:00:15.678 |
2021-11-05 10:59:44.321 |
2021-11-05 10:59:44.000 |
2021-11-05 11:00:15.678 |
2022-12-06 00:00:00.000 |
2022-12-06 |
2022-12-06 |
2020-10-06 00:00:00.000 |
2020-10-06 |
2020-10-06 |
2023-12-06 00:00:00.000 |
2023-12-06 |
2023-12-06 |
2019-10-06 00:00:00.000 |
2019-10-06 |
2019-10-06 |
2021-12-06 00:00:00.000 |
2021-12-06 |
2021-12-06 |
2021-12-06 00:00:00.000 |
2021-10-06 |
2021-10-06 |
2022-01-06 00:00:00.000 |
2022-01-06 |
2022-01-06 |
2021-09-06 00:00:00.000 |
2021-09-06 |
2021-09-06 |
2021-11-07 01:00:00.000 |
2021-11-07 01:00:00.222 |
2021-11-07 |
2021-11-04 22:59:59.000 |
2021-11-04 22:59:59.778 |
2021-11-04 |
2021-11-07 01:10:00.000 |
2021-11-07 01:10:00.000 |
2021-11-07 |
2021-11-04 22:50:00.000 |
2021-11-04 22:50:00.000 |
2021-11-04 |
2021-11-07 01:00:00.000 |
2021-11-07 01:00:00.000 |
2021-11-07 |
2021-11-04 23:00:00.000 |
2021-11-04 23:00:00.000 |
2021-11-04 |
2021-11-16 00:00:00.000 |
2021-11-16 |
2021-11-16 |
2021-10-27 00:00:00.000 |
2021-10-27 |
2021-10-27 |
2021-11-06 03:05:00.000 |
2021-11-06 03:05:00.000 |
2021-11-06 |
2021-11-05 20:55:00.000 |
2021-11-05 20:55:00.000 |
2021-11-05 |
2021-11-06 05:00:00.000 |
2021-11-06 05:00:00.000 |
2021-11-06 |
2021-11-05 19:00:00.000 |
2021-11-05 19:00:00.000 |
2021-11-05 |
2021-11-06 00:05:10.000 |
2021-11-06 00:05:10.000 |
2021-11-06 |
2021-11-05 23:54:50.000 |
2021-11-05 23:54:50.000 |
2021-11-05 |
2021-11-06 00:30:00.000 |
2021-11-06 00:30:00.000 |
2021-11-06 |
2021-11-05 23:30:00.000 |
2021-11-05 23:30:00.000 |
2021-11-05 |
2021-11-19 21:00:00.000 |
2021-11-19 21:00:00.000 |
2021-11-19 |
2021-10-23 03:00:00.000 |
2021-10-23 03:00:00.000 |
2021-10-23 |
2021-11-06 00:00:15.000 |
2021-11-06 00:00:16.000 |
2021-11-06 |
2021-11-05 23:59:44.000 |
2021-11-05 23:59:44.000 |
2021-11-05 |
2010-11-01 12:00:00.000 |
2010-11-01 12:00:00.000 |
2010-11-01 12:00:00.000 |
2008-09-01 12:00:00.000 |
2008-09-01 12:00:00.000 |
2008-09-01 12:00:00.000 |
2011-11-01 12:00:00.000 |
2011-11-01 12:00:00.000 |
2011-11-01 12:00:00.000 |
2007-09-01 12:00:00.000 |
2007-09-01 12:00:00.000 |
2007-09-01 12:00:00.000 |
2009-11-01 12:00:00.000 |
2009-11-01 12:00:00.000 |
2009-11-01 12:00:00.000 |
2009-09-01 12:00:00.000 |
2009-09-01 12:00:00.000 |
2009-09-01 12:00:00.000 |
2009-12-01 12:00:00.000 |
2009-12-01 12:00:00.000 |
2009-12-01 12:00:00.000 |
2009-08-01 12:00:00.000 |
2009-08-01 12:00:00.000 |
2009-08-01 12:00:00.000 |
2009-10-02 13:00:00.222 |
2009-10-02 13:00:00.222 |
2009-10-02 13:00:00.222 |
2009-09-30 10:59:59.778 |
2009-09-30 10:59:59.778 |
2009-09-30 10:59:59.778 |
2009-10-02 13:10:00.000 |
2009-10-02 13:10:00.000 |
2009-10-02 13:10:00.000 |
2009-09-30 10:50:00.000 |
2009-09-30 10:50:00.000 |
2009-09-30 10:50:00.000 |
2009-10-02 13:00:00.000 |
2009-10-02 13:00:00.000 |
2009-10-02 13:00:00.000 |
2009-09-30 11:00:00.000 |
2009-09-30 11:00:00.000 |
2009-09-30 11:00:00.000 |
2009-10-11 12:00:00.000 |
2009-10-11 12:00:00.000 |
2009-10-11 12:00:00.000 |
2009-09-21 12:00:00.000 |
2009-09-21 12:00:00.000 |
2009-09-21 12:00:00.000 |
2009-10-01 15:05:00.000 |
2009-10-01 15:05:00.000 |
2009-10-01 15:05:00.000 |
2009-10-01 08:55:00.000 |
2009-10-01 08:55:00.000 |
2009-10-01 08:55:00.000 |
2009-10-01 17:00:00.000 |
2009-10-01 17:00:00.000 |
2009-10-01 17:00:00.000 |
2009-10-01 07:00:00.000 |
2009-10-01 07:00:00.000 |
2009-10-01 07:00:00.000 |
2009-10-01 12:05:10.000 |
2009-10-01 12:05:10.000 |
2009-10-01 12:05:10.000 |
2009-10-01 11:54:50.000 |
2009-10-01 11:54:50.000 |
2009-10-01 11:54:50.000 |
2009-10-01 12:30:00.000 |
2009-10-01 12:30:00.000 |
2009-10-01 12:30:00.000 |
2009-10-01 11:30:00.000 |
2009-10-01 11:30:00.000 |
2009-10-01 11:30:00.000 |
2009-10-15 09:00:00.000 |
2009-10-15 09:00:00.000 |
2009-10-15 09:00:00.000 |
2009-09-17 15:00:00.000 |
2009-09-17 15:00:00.000 |
2009-09-17 15:00:00.000 |
2009-10-01 12:00:15.679 |
2009-10-01 12:00:16.000 |
2009-10-01 12:00:15.678 |
2009-10-01 11:59:44.321 |
2009-10-01 11:59:44.000 |
2009-10-01 11:59:44.321 |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-FDM-OR0042: o tipo Date transformado em Timestamp tem um comportamento diferente
Tipos de dados PL SQL¶
Tipo de dados BINARY_INTEGER¶
Esse tipo de dados é idêntico ao tipo de dados PLS_INTEGER.
Tipo de dados PLS_INTEGER¶
Descrição¶
O tipo de dados
PLS_INTEGERarmazena números inteiros com sinal no intervalo de -2.147.483.648 a 2.147.483.647, representados em 32 bits. (Tipo de dados PLS_INTEGER da referência de linguagem Oracle)
O tipo de dados PLS_INTEGER é transformado em NUMBER. Essa transformação também se aplica a cada subtipo de PLS_INTEGER:
NATURALNATURALNPOSITIVEPOSITIVENSIGNTYPESIMPLE_INTEGER
Aviso
Alguns destes subtipos não são atualmente reconhecidos pelo SnowConvert AI para que sejam convertidos em VARIANT e consideram tipos definidos pelo usuário. Já existe um item de trabalho para corrigir o problema.
Amostra de padrões da origem¶
Considere a tabela a seguir e suas inserções para os exemplos abaixo:
Código¶
Uso de PLS_INTEGER em blocos processuais¶
Oracle¶
Resultado¶
COL |
|---|
2147483647 |
2147483648 |
2147483649 |
Snowflake¶
Resultado¶
COL |
|---|
2147483647 |
2147483648 |
2147483649 |
Problemas conhecidos¶
1. Storage and performance features were not preserved¶
O Oracle PLS_INTEGER tem algumas vantagens em termos de tamanho de armazenamento e desempenho em operações aritméticas. Esses recursos não foram emulados porque o Snowflake NUMBER não os possui. Para obter mais informações, consulte a documentação do PLS_INTEGER.
EWIs relacionados¶
Sem EWIs relacionados.
Tipos de dados de caracteres¶
Os tipos de dados de caracteres armazenam dados de caracteres (alfanuméricos), que são palavras e texto de forma livre, no conjunto de caracteres de banco de dados ou conjunto de caracteres nacionais. (Tipos de dados de caracteres de referência de linguagem Oracle SQL)
Tipo de dados CHAR¶
Descrição¶
O tipo de dados
CHARespecifica uma cadeia de caracteres de comprimento fixo no conjunto de caracteres do banco de dados. (Tipo de dados CHAR da referência de linguagem Oracle SQL)
Conforme indicado na documentação do Oracle, o tamanho no tipo de dados CHAR é uma restrição de comprimento e não deve ser confundido com capacidade. O total de caracteres que podem ser armazenados em um CHAR pode variar de acordo com o conjunto de caracteres e a configuração do banco de dados, mas geralmente o tamanho máximo permitido é 2000.
No Snowflake, os tipos CHAR são sinônimos de VARCHAR e, como você pode conferir aqui:
Tipos de dados de texto da referência de linguagem Snowflake SQL
O tamanho máximo padrão é bem maior. No entanto, isso não significa que um Snowflake VARCHAR consumirá mais armazenamento, conforme mencionado na documentação:
Uma cadeia de 1 caractere em uma coluna VARCHAR(16777216) consome apenas um único caractere.
Amostra de padrões da origem¶
Tipos de dados Char em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados de colunas char¶
Oracle¶
Resultado¶
CHAR_COLUMN1 |
CHAR_COLUMN2 |
CHAR_COLUMN3 |
CHAR_COLUMN4 |
|---|---|---|---|
H |
Hello world |
Hello world |
Hello world |
Snowflake¶
Resultado¶
CHAR_COLUMN1 |
CHAR_COLUMN2 |
CHAR_COLUMN3 |
CHAR_COLUMN4 |
|---|---|---|---|
H |
Hello world |
Hello world |
Hello world |
Nota
No Oracle, o valor é preenchido com espaços vazios para se ajustar ao tamanho fixo determinado na definição da coluna. Por outro lado, o Snowflakes usa o tamanho dinâmico (mantendo a restrição de comprimento) para armazenar o valor.
Verificação de tipos de dados internos para CHAR¶
Conforme mencionado no início, o Snowflake usa internamente um VARCHAR para as colunas do tipo CHAR. Podemos confirmar isso descrevendo as tabelas:
Oracle¶

Snowflake¶

Nota
A restrição de comprimento é preservada, mas a memória que as colunas estão usando é diferente em cada DBMS.
Recuperação do tamanho em bytes de cada coluna:¶
Oracle¶
Resultado¶
LENGTHB(CHAR_COLUMN1) |
LENGTHB(CHAR_COLUMN2) |
LENGTHB(CHAR_COLUMN3) |
LENGTHB(CHAR_COLUMN4) |
|---|---|---|---|
1 |
15 |
15 |
15 |
Snowflake¶
Resultado¶
OCTET_LENGTH(CHAR_COLUMN1) |
OCTET_LENGTH(CHAR_COLUMN2) |
OCTET_LENGTH(CHAR_COLUMN3) |
OCTET_LENGTH(CHAR_COLUMN4) |
|---|---|---|---|
1 |
11 |
11 |
11 |
Observação
Além dessas pequenas diferenças, a integridade dos dados é preservada.
Problemas conhecidos¶
1. Os resultados obtidos com algumas funções incorporadas podem variar
Conforme explicado na seção anterior, pode haver casos em que o uso de funções incorporadas nas colunas pode gerar resultados diferentes. Por exemplo, obter o comprimento de uma coluna.
EWIs relacionados¶
SSC-FDM-OR0015: LENGTHB transformado em OCTET_LENGTH.
Tipo de dados NCHAR¶
Descrição¶
O tipo de dados NCHAR especifica uma cadeia de caracteres de comprimento fixo no conjunto de caracteres nacionais. (Referência da linguagem Oracle SQL NCHAR)
NCHAR permite armazenar caracteres especiais com seu Unicode para serem preservados em qualquer uso; esses caracteres especiais podem precisar de mais bits para serem armazenados e é por isso que, por padrão, o conjunto de caracteres NCHAR é AL16UTF16, ao contrário do conjunto de dados de caracteres comuns para CHAR, que geralmente é AL32UTF8.
NCHAR é preservado como NCHAR no Snowflake, mas, em segundo plano, o Snowflake usa VARCHAR. As informações de transformação relacionadas a CHAR também são válidas para NCHAR.
Padrões de fontes de amostra¶
Tipos de dados Nchar em Create Table¶
Oracle¶
Snowflake¶
Nota
No Oracle, a tentativa de inserir esses valores em uma coluna CHAR com o mesmo tamanho acionará um erro: value too large for column.
Recuperação de informações de colunas Nchar¶
Oracle¶
Resultado¶
NCHAR_COLUMN1 |
NCHAR_COLUMN2 |
|---|---|
ភ |
ភាសាខ |
Snowflake¶
Resultado¶
NCHAR_COLUMN1 |
NCHAR_COLUMN2 |
|---|---|
ភ |
ភាសាខ |
Recuperação do tamanho em bytes de cada coluna¶
Oracle¶
Resultado¶
LENGTHB(NCHAR_COLUMN1) |
LENGTHB(NCHAR_COLUMN2) |
|---|
Snowflake¶
Resultado¶
OCTET_LENGTH(NCHAR_COLUMN1) |
OCTET_LENGTH(NCHAR_COLUMN2) |
|---|
Observe que o número especificado na declaração da coluna é o tamanho em caracteres e não em bytes. É por isso que vemos mais espaço usado para armazenar esses caracteres especiais.
Nota
No Snowflake, VARCHAR usa UTF-8, o tamanho pode variar dependendo do caractere Unicode que pode ser representado em 1, 2, 3 ou 4 bytes. Nesse caso, o caractere cambojano está usando 3 bytes para ser armazenado.
Observação
Além dessas pequenas diferenças, a integridade dos dados é preservada.
Problemas conhecidos¶
1. Os resultados obtidos com algumas funções incorporadas podem variar
Conforme explicado na seção anterior, pode haver casos em que o uso de funções incorporadas nas colunas pode gerar resultados diferentes. Por exemplo, obter o comprimento de uma coluna.
EWIs relacionados¶
SSC-FDM-OR0015: LENGTHB transformado em OCTET_LENGTH.
Tipo de dados NVARCHAR2¶
Descrição¶
O tipo de dados
NVARCHAR2especifica uma cadeia de caracteres de comprimento variável no conjunto de caracteres nacionais. (Referência da linguagem Oracle SQL NVARCHAR2)
NVARCHAR2 permite armazenar caracteres especiais com seu Unicode para serem preservados em qualquer uso; esses caracteres especiais podem precisar de mais bits para serem armazenados e é por isso que, por padrão, o conjunto de caracteres NVARCHAR2 é AL16UTF16, ao contrário do conjunto de dados de caracteres comuns para VARCHAR2, que geralmente é AL32UTF8.
NVARCHAR transformado em Snowflake VARCHAR, Informações de transformação relacionadas ao VARCHAR2, também é válido para NVARCHAR2.
Padrões de fontes de amostra¶
Tipo de dados Nvarchar2 em Create Table¶
Oracle¶
Snowflake¶
Nota
No Oracle, a tentativa de inserir esses valores em uma coluna VARCHAR2 com o mesmo tamanho acionará um erro: value too large for column.
Recuperação de informações de colunas Nchar¶
Oracle¶
Resultado¶
NVARCHAR2_COLUMN |
|---|
ភាសាខ |
Snowflake¶
Resultado¶
NVARCHAR2_COLUMN |
|---|
ភាសាខ |
Recuperação do tamanho em bytes de cada coluna¶
Oracle¶
Resultado¶
LENGTHB(NVARCHAR2_COLUMN) |
|---|
10 |
Snowflake¶
Resultado¶
OCTET_LENGTH(NVARCHAR2_COLUMN) |
|---|
15 |
Observe que o número especificado na declaração da coluna é o tamanho em caracteres e não em bytes. É por isso que vemos mais espaço usado para armazenar esses caracteres especiais.
Nota
No Snowflake, VARCHAR usa UTF-8, o tamanho pode variar dependendo do caractere Unicode que pode ser representado em 1, 2, 3 ou 4 bytes. Nesse caso, os caracteres cambojanos estão usando 3 bytes para serem armazenados.
Observação
Além dessas pequenas diferenças, a integridade dos dados é preservada.
Problemas conhecidos¶
1. Os resultados obtidos com algumas funções incorporadas podem variar
Conforme explicado na seção anterior, pode haver casos em que o uso de funções incorporadas nas colunas pode gerar resultados diferentes. Por exemplo, obter o comprimento de uma coluna.
EWIs relacionados¶
SSC-FDM-OR0015: LENGTHB transformado em OCTET_LENGTH.
Tipo de dados VARCHAR¶
Descrição¶
A Oracle recomenda o uso de VARCHAR2 em vez de VARCHAR, conforme explicado em sua documentação:
Varchar da referência de linguagem Oracle SQL
Mesmo assim, a sintaxe é analisada e transformada usando os tipos de dados ANSI, DB2 e SQL/DS.
Tipo de dados VARCHAR2¶
Descrição¶
O tipo de dados
VARCHAR2especifica uma cadeia de caracteres de comprimento variável no conjunto de caracteres do banco de dados. (Referência da linguagem Oracle SQL VARCHAR2)
Conforme indicado na documentação do Oracle, o tamanho no tipo de dados VARCHAR2 é uma restrição de comprimento e não deve ser confundido com capacidade. O total de caracteres que podem ser armazenados em um VARCHAR2 pode variar de acordo com o conjunto de caracteres e a configuração do banco de dados, mas geralmente o tamanho máximo permitido é 4000.
VARCHAR2 é convertido para o Snowflake VARCHAR, que pode armazenar um número maior de bytes/caracteres por padrão. De qualquer forma, a memória usada é variável, usando o tamanho do valor armazenado na coluna, da mesma forma que no Oracle.
Amostra de padrões da origem¶
Tipos de dados Varchar2 em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados de colunas varchar¶
Oracle¶
Resultado¶
VARCHAR2_COLUMN1 |
VARCHAR2_COLUMN2 |
VARCHAR2_COLUMN3 |
|---|---|---|
H |
Hello |
Hell |
Snowflake¶
Resultado¶
VARCHAR2_COLUMN1 |
VARCHAR2_COLUMN2 |
VARCHAR2_COLUMN3 |
|---|---|---|
H |
Hello |
Hell |
Revisão do tamanho da variável nas colunas¶
Oracle¶
Resultado¶
LENGTHB(VARCHAR2_COLUMN1) |
LENGTHB(VARCHAR2_COLUMN2) |
LENGTHB(VARCHAR2_COLUMN3) |
|---|---|---|
1 |
5 |
4 |
Snowflake¶
Resultado¶
OCTET_LENGTH(VARCHAR2_COLUMN1) |
OCTET_LENGTH(VARCHAR2_COLUMN2) |
OCTET_LENGTH(VARCHAR2_COLUMN3) |
|---|---|---|
1 |
5 |
4 |
Problemas conhecidos¶
Não foram encontrados problemas.
EWIs relacionados¶
SSC-FDM-OR0015: LENGTHB transformado em OCTET_LENGTH.
Tipos de dados de LOB¶
Descrição¶
Os tipos de dados LOB
BLOB,CLOBeNCLOB(armazenados internamente) eBFILE(armazenados externamente) podem armazenar dados grandes e não estruturados, como texto, imagem, vídeo e dados espaciais. (Tipo de dados LOB da referência de linguagem Oracle SQL)
Aviso
Tipos de dados LOB não são compatíveis com o Snowflake. De acordo com a documentação do Snowflake, é recomendável transformar CLOB em VARCHAR e BLOB em BINARY. No entanto, há várias limitações. {% endhint %}
Aviso
As propriedades LOB das tabelas também não são compatíveis com o Snowflake. {% endhint %}
Tipo de dados BFILE
Description
Contém um localizador para um grande arquivo binário armazenado fora do banco de dados. Permite o acesso de E/S de fluxo de bytes a LOBs externos que residem no servidor de banco de dados. Uma coluna ou atributo
BFILEarmazena um localizadorBFILE, que funciona como um ponteiro para um arquivo binário no sistema de arquivos do servidor. O localizador mantém o nome do diretório e o nome do arquivo. (Tipo de dados BFILE da referência de linguagem Oracle SQL).
Aviso
O tipo de dados BFILE não é suportado no Snowflake. VARCHAR é usado em seu lugar.
Amostra de padrões da origem¶
Tipo de dados Bfile em Create Table¶
Aviso
Oracle BFILE columns are used to store a locator with the directory and filename. They are changed to Snowflake VARCHAR to store the directory and filename into the column. However, loading the content of the file must be done manually.
Oracle¶
Resultado¶
COL1 |
|---|
[BFILE:myfile.png] |
Snowflake¶
Resultado¶
COL1 |
|---|
mydirectory\myfile.png |
Aviso
UDF adicionado para substituir BFILENAME().
UDF Adicionado
Problemas conhecidos¶
1. No access to the DBMS_LOB built-in package¶
Como os tipos de dados LOB não são compatíveis com o Snowflake, não há equivalente para as funções DBMS_LOB e ainda não há soluções alternativas implementadas.
EWIs relacionados¶
SSC-EWI-OR0105: Trabalho adicional é necessário para o uso da coluna BFILE. A função BUILD_STAGE_URL é uma solução alternativa recomendada.
Tipo de dados BLOB¶
Descrição¶
O tipo de dados
BLOBarmazena objetos grandes binários não estruturados. Os objetosBLOBpodem ser considerados fluxos de bits sem semântica de conjunto de caracteres. (Tipo de dados BLOB da referência de linguagem Oracle SQL).
Aviso
O tipo de dados BLOB não é suportado no Snowflake. BINARY é usado em seu lugar.
Amostra de padrões da origem¶
BLOB em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados¶
Oracle¶
Resultado¶
BLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
[NULL] |
[BLOB] |
Snowflake¶
Resultado¶
BLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
NULL |
Exemplo funcional¶
Aviso
Este exemplo não é uma tradução do SnowConvert AI, ele é usado apenas para mostrar a equivalência funcional entre Oracle BLOB e Snowflake BINARY
Aviso
Estamos usando as funções «utl_raw.cast_to_raw» e «DBMS_LOB.SUBSTR». No momento, a conversão para essas funções não é compatível com o SnowConvert.
Oracle¶
Resultado¶
RESULT |
|---|
[NULL] |
hello world |
Snowflake¶
Resultado¶
RESULT |
|---|
[NULL] |
hello world |
Problemas conhecidos¶
1. The difference in max length BLOB (Oracle) and BINARY (Snowflake)¶
O tamanho máximo de uma coluna Oracle BLOB é (4 gigabytes - 1) * (tamanho do bloco de banco de dados) , mas o Snowflake BINARY está limitado a 8MB.
2. Empty value with EMPTY_BLOB¶
A inicialização de uma coluna usando EMPTY_BLOB() retornará um localizador LOB vazio. Após a conversão, a coluna retornará uma cadeia de caracteres com “ “.
3. No access to the DBMS_LOB built-in package¶
Como os tipos de dados LOB não são compatíveis com o Snowflake, não há equivalente para as funções DBMS_LOB e ainda não há soluções alternativas implementadas.
EWIs relacionados¶
SSC-EWI-OR0076: pacote interno incompatível.
Tipo de dados CLOB¶
Descrição¶
Um objeto de caractere grande que contém caracteres de byte único ou de vários bytes. Há suporte para conjuntos de caracteres de largura fixa e variável, ambos usando o conjunto de caracteres do banco de dados. (Tipo de dados CLOB da referência de linguagem Oracle SQL).
Aviso
O tipo de dados CLOB não é suportado no Snowflake. VARCHAR é usado em seu lugar.
Amostra de padrões da origem¶
CLOB em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados¶
Oracle¶
Resultado¶
CLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
Snowflake¶
Resultado¶
CLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
- |
Problemas conhecidos¶
1. The difference in max length CLOB (Oracle) and VARCHAR (Snowflake)¶
O tamanho máximo de uma coluna Oracle CLOB é (4 gigabytes - 1) * (tamanho do bloco de banco de dados) , mas o Snowflake VARCHAR está limitado a 16MB.
2. Empty value with EMPTY_CLOB¶
A inicialização de uma coluna usando EMPTY_CLOB() retornará um localizador LOB vazio. Já no Snowflake, após a conversão, a coluna retornará uma cadeia de caracteres com “ - “.
3. No access to the DBMS_LOB built-in package¶
Como os tipos de dados LOB não são compatíveis com o Snowflake, não há um equivalente para as funções DBMS_LOB e ainda não há soluções alternativas implementadas.
EWIs relacionados¶
Sem EWIs relacionados.
Tipo de dados NCLOB¶
Descrição¶
Um objeto de caractere grande que contém caracteres Unicode. Há suporte para conjuntos de caracteres de largura fixa e variável, ambos usando o conjunto de caracteres nacionais do banco de dados. (Tipo de dados NCLOB da referência de linguagem Oracle SQL).
Aviso
O tipo de dados NCLOB não é suportado no Snowflake. VARCHAR é usado em seu lugar.
Amostra de padrões da origem¶
NCLOB em Create Table¶
Oracle¶
Snowflake¶
Recuperação de dados¶
Oracle¶
Resultado¶
NCLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
Snowflake¶
Resultado¶
NCLOB_COLUMN |
EMPTY_COLUMN |
|---|---|
THIS IS A TEST |
- |
Problemas conhecidos¶
1. The difference in max length CLOB (Oracle) and VARCHAR (Snowflake)¶
O tamanho máximo de uma coluna Oracle NCLOB é (4 gigabytes - 1) * (tamanho do bloco de banco de dados) , mas o Snowflake VARCHAR está limitado a 16MB.
2. Empty value with EMPTY_CLOB¶
A inicialização de uma coluna usando EMPTY_CLOB() retornará um localizador LOB vazio. Após a conversão, a coluna retornará uma cadeia de caracteres com “ - “.
3. No access to the DBMS_LOB built-in package¶
Como os tipos de dados LOB não são compatíveis com o Snowflake, não há um equivalente para as funções DBMS_LOB e ainda não há soluções alternativas implementadas.
EWIs relacionados¶
Sem EWIs relacionados.