SnowConvert AI - Oracle - Tipos de dados

Esta seção mostra os equivalentes entre os tipos de dados no Oracle e no Snowflake, bem como algumas observações sobre diferenças aritméticas.

Oracle

Snowflake

Tipos de dados ANSI

*Acesse o link para obter mais informações

BFILE

VARCHAR

BINARY_DOUBLE

FLOAT

BINARY_FLOAT

FLOAT

BLOB

BINARY

CHAR (N)

CHAR (N)

CLOB

VARCHAR

DATE

TIMESTAMP

FLOAT

FLOAT

INTERVAL YEAR TO MONTH

VARCHAR(20)

INTERVAL DAY TO SECOND

VARCHAR(20)

JSON

VARIANT

LONG

VARCHAR

LONG RAW

BINARY

NCHAR (N)

NCHAR (N)

NCLOB

VARCHAR

NUMBER(p, s)

NUMBER(p, s)

NVARCHAR2 (N)

VARCHAR (N)

RAW

BINARY

ROWID

VARCHAR(18)

VARCHAR2 (N)

VARCHAR (N)

SDO_GOMETRY

Atualmente incompatível

SDO_TOPO___GEOMETRY

*a ser definido

SDO_GEORASTER

*a ser definido

SYS.ANYDATA

VARIANT

SYS.ANYDATASET

*a ser definido

SYS.ANYTYPE

*a ser definido

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP_TZ

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP_LTZ

URITYPE

*a ser definido

UROWID

VARCHAR(18)

VARCHAR

VARCHAR

VARCHAR2

VARCHAR

XMLType

VARIANT

Notas sobre operações aritméticas

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.

Tipos de dados de ANSI

Descrição

Instruções SQL que criam tabelas e clusters também podem usar os tipos de dados ANSI e os tipos de dados dos produtos IBM SQL/DS e DB2. A Oracle reconhece o nome do tipo de dados ANSI ou IBM que é diferente do nome do tipo de dados do Oracle Database. Ele converte o tipo de dados para o tipo de dados Oracle equivalente, registra o tipo de dados Oracle como o nome do tipo de dados da coluna e armazena os dados da coluna no tipo de dados Oracle com base nas conversões mostradas nas tabelas a seguir. (Tipos de dados ANSI, DB2 e SQL/DS da referência de linguagem Oracle).

Ao criar uma nova tabela, o Oracle e o Snowflake tratam alguns tipos de dados como sinônimos e aliases e os transformam no tipo de dados padrão. Conforme mostrado na tabela a seguir:

ANSI

ORACLE

SNOWFLAKE

CHARACTER (n)

CHAR (n)

VARCHAR

CHAR (n)

CHAR (n)

VARCHAR

CHARACTER VARYING (n)

VARCHAR2 (n)

VARCHAR

CHAR VARYING (n)

VARCHAR2 (n)

VARCHAR

NATIONAL CHARACTER (n)

NCHAR (n)

VARCHAR*

NATIONAL CHAR (n)

NCHAR (n)

VARCHAR*

NCHAR (n)

NCHAR (n)

VARCHAR

NATIONAL CHARACTER VARYING (n)

NVARCHAR2 (n)

VARCHAR*

NATIONAL CHAR VARYING (n)

NVARCHAR2 (n)

VARCHAR*

NCHAR VARYING (n)

NVARCHAR2 (n)

NUMBER (p, s)

NUMERIC [(p, s)]

NUMBER (p, s)

NUMBER (p, s)

DECIMAL [(p, s)]

NUMBER (p, s)

NUMBER (38)

INTEGER

NUMBER (38)

NUMBER (38)

INT

NUMBER (38)

NUMBER (38)

SMALLINT

NUMBER (38)

NUMBER (38)

FLOAT

FLOAT (126)

DOUBLE

DOUBLE PRECISION

FLOAT (126)

DOUBLE

REAL

FLOAT (63)

DOUBLE

Para obter mais informações sobre a especificação de tradução dos tipos de dados Oracle, acesse Tipos de dados internos Oracle.

Nota

VARCHAR*: Quase todos os tipos de dados ANSI são compilados no Snowflake, mas aqueles marcados com um asterisco são convertidos manualmente para VARCHAR.

Problemas conhecidos

Não foram encontrados problemas.

Personalização do tipo de dados

SnowConvert AI enables Data Type Customization to specify rules for data type transformation based on data type origin and column name. This feature allows you to personalize data type conversions and set precision values more accurately during migration.

For complete documentation on configuring data type customization, including JSON structure, configuration options, and priority rules, see Data type mappings in the Oracle Conversion Settings documentation.

NUMBER to DECFLOAT Transformation

SnowConvert AI supports transforming Oracle NUMBER columns to Snowflake DECFLOAT data type. This is useful when you need to preserve the exact decimal precision of numeric values during migration.

When a NUMBER column is configured to be transformed to DECFLOAT:

  1. The column data type in CREATE TABLE statements is transformed to DECFLOAT

  2. Numeric literals in INSERT statements that target DECFLOAT columns are automatically wrapped with CAST(... AS DECFLOAT) to ensure proper data type handling

  3. Column references in INSERT ... SELECT statements are also cast appropriately

Exemplo

Oracle
CREATE TABLE products (
    product_id NUMBER(10),
    price NUMBER(15, 2)
);

INSERT INTO products VALUES (1, 99.99);
Snowflake (with DECFLOAT customization for price column)
CREATE OR REPLACE TABLE products (
    product_id NUMBER(10),
    price DECFLOAT
);

INSERT INTO products VALUES (1, CAST(99.99 AS DECFLOAT));

Nota

The TypeMappings report (TypeMappings.csv) provides a detailed view of all data type transformations applied during conversion. See TypeMappings Report for more information.