SnowConvert AI - Oracle - Types de données

Cette section montre les équivalents entre les types de données dans Oracle et Snowflake, ainsi que quelques remarques sur les différences arithmétiques.

Oracle

Snowflake

Types de données ANSI

*Accédez au lien pour obtenir plus d’informations

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

Actuellement non pris en charge

SDO_TOPO___GEOMETRY

*à définir

SDO_GEORASTER

*à définir

SYS.ANYDATA

VARIANT

SYS.ANYDATASET

*à définir

SYS.ANYTYPE

*à définir

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP_TZ

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP

URITYPE

*à définir

UROWID

VARCHAR(18)

VARCHAR

VARCHAR

VARCHAR2

VARCHAR

XMLType

VARIANT

Notes sur les opérations arithmétiques

Notez que toute opération effectuée sur des types de données numériques est stockée en interne sous la forme d’un nombre. De plus, en fonction de l’opération effectuée, il est possible d’encourir une erreur liée à la manière dont les valeurs intermédiaires sont stockées dans Snowflake, pour plus d’informations veuillez consulter ce post Snowflake sur les nombres intermédiaires dans Snowflake.

Types de données ANSI

Description

Les instructions SQL qui créent des tables et des clusters peuvent également utiliser les types de données ANSI et les types de données des produits IBM SQL/DS et DB2. Oracle reconnaît le nom du type de données ANSI ou IBM qui diffère du nom du type de données de la base de données Oracle. Il convertit le type de données en type de données Oracle équivalent, enregistre le type de données Oracle comme nom du type de données de la colonne et stocke les données de la colonne dans le type de données Oracle en fonction des conversions indiquées dans les tables suivantes. (Référence linguistique Oracle types de données ANSI, DB2, et SQL/DS).

Lors de la création d’une nouvelle table, Oracle et Snowflake traitent certains types de données comme des synonymes et des alias et les transforment en type de données par défaut. Comme le montre la table suivante :

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

Pour obtenir plus d’informations sur la spécification de traduction des types de données Oracle, accédez à Types de données intégrés Oracle.

Note

VARCHAR* : Presque tous les types de données ANSI se compilent dans Snowflake, mais ceux qui sont marqués d’un astérisque sont convertis manuellement en VARCHAR.

Problèmes connus

Aucun problème n’a été constaté.

Personnalisation du type de données

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

Exemple

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));

Note

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