SnowConvert AI - Oracle - 데이터 타입

이 섹션에서는 Oracle과 Snowflake 데이터 타입 간의 동등성 및 산술적 차이에 대한 몇 가지 참고 사항을 보여줍니다.

Oracle

Snowflake

ANSI 데이터 타입

*자세한 내용은 링크로 이동

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

현재 지원되지 않음

SDO_TOPO___GEOMETRY

*정의 예정

SDO_GEORASTER

*정의 예정

SYS.ANYDATA

VARIANT

SYS.ANYDATASET

*정의 예정

SYS.ANYTYPE

*정의 예정

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP_TZ

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP_LTZ

URITYPE

*정의 예정

UROWID

VARCHAR(18)

VARCHAR

VARCHAR

VARCHAR2

VARCHAR

XMLType

VARIANT

산술 작업에 대한 참고 사항

숫자 데이터 타입에서 수행되는 모든 작업은 내부적으로 숫자로 저장된다는 점에 유의하십시오. 또한, 수행되는 작업에 따라 중간값이 저장되는 방식과 관련된 오류가 발생할 수 있으며, 자세한 내용은 Snowflake의 중간값에 대한 게시글 을 참조하십시오.

ANSI 데이터 타입

설명

SQL 테이블과 클러스터를 생성하는 문은 IBM 제품 SQL/DS 및 DB2 의 ANSI 데이터 타입과 데이터 타입을 사용할 수도 있습니다. Oracle은 Oracle 데이터베이스 데이터 타입 이름과 다른 ANSI 또는 IBM 데이터 타입 이름을 인식합니다. 데이터 타입을 동등한 Oracle 데이터 타입으로 변환하고, Oracle 데이터 타입을 열 데이터 타입의 이름으로 기록하고, 다음 테이블에 표시된 변환에 따라 열 데이터를 Oracle 데이터 타입으로 저장합니다.(Oracle Language Reference ANSI, DB2 및 SQL/DS 데이터 타입).

새 테이블을 만들 때 Oracle 및 Snowflake는 일부 데이터 타입을 동의어 및 별칭으로 처리하여 기본 데이터 타입으로 변환합니다. 다음 테이블과 같습니다.

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

Oracle 데이터 타입의 변환 사양에 대한 자세한 내용을 보려면 [Oracle 기본 제공 데이터 타입](oracle- built-in-data-types.md)으로 이동하세요.

참고

VARCHAR*: 거의 모든 ANSI 데이터 타입은 Snowflake로 컴파일되지만 별표가 표시된 데이터 타입은 VARCHAR 로 수동 변환됩니다.

Known Issues

문제가 발견되지 않았습니다.

데이터 타입 사용자 지정

데이터베이스 마이그레이션 프로세스 중 데이터 타입 변환은 많은 사용자가 전체 자릿수 값을 더 정확하게 개인화하고 설정해야 하는 작업입니다. 이러한 이유로, SnowConvert AI를 사용하면 데이터 타입 사용자 지정이 데이터 타입 원본 및 열 이름을 고려하여 데이터 타입 변환 규칙을 지정할 수 있습니다.

지원되는 데이터 타입

지원되는 데이터 타입은 다음과 같습니다.

  • NUMBER

JSON 의 구조

SnowConvert AI는 다음 구조의 JSON 파일을 수신합니다.

{
  "types" : {
  },
  "columns": [
      {
          "nameExpression" : "",
          "targetType" : ""
      }
  ]
}
Copy

오브젝트 types은 원본 데이터 타입 및 대상이 되어야 하는 데이터 타입을 정의합니다. 또한, 전체 자릿수가 있거나 없는 원본 데이터 타입을 변환하는 일반 규칙을 정의할 수도 있습니다. 예:

"types" : {
    "NUMBER" : "NUMBER(11, 2)",
    "NUMBER(10, 0)" : "NUMBER(3, 0)"
}
Copy

columns 오브젝트는 배열이며, 배열의 각 오브젝트는 열의 이름 또는 정규식 식을 정의하여 유형을 변경합니다.

"columns": [
    {
        "nameExpression" : "MONTH",
        "targetType" : "NUMBER(2,0)"
    }
]
Copy

참고

정규식 사용자 지정을 사용할 때 정규식이 올바르지 않으면 마이그레이션에 영향을 미칠 수 있습니다.

사용자 지정 우선 순위

동일한 오브젝트에 적용되는 사용자 지정 규칙이 있을 수 있지만 하나만 선택됩니다. SnowConvert AI는 다음 고려 사항을 고려하여 따라야 할 규칙의 우선 순위를 지정합니다.

  1. 열의 첫 번째 규칙은 위에서 아래로 위치합니다.

  2. 정밀도를 고려하여 유형으로 정의된 규칙입니다.

  3. 데이터 타입에 대한 일반적인 규칙이 정의되어 있습니다.

  4. 규칙은 SnowConvert 에 정의되어 있습니다.

다음과 같은 입력 코드가 있다고 가정해 보겠습니다.

Input Code

CREATE TABLE employees (
	employee_ID NUMBER,
	manager_YEAR NUMBER(10, 0),
	manager_MONTH NUMBER(10, 0)
);
Copy

및 다음과 같은 이름 변경 정보

Customization File (.JSON)

{
    "types" : {
        "NUMBER" : "NUMBER(11, 2)",
        "NUMBER(10, 0)" : "NUMBER(3, 0)"    
    },
    "columns": [
        {
            "nameExpression" : "MONTH",
            "targetType" : "NUMBER(2,0)"
        }
    ]
}
Copy

이것은 사용자 정의 데이터 타입이 있는 경우와 없는 경우의 출력 코드입니다.

Snowflake 출력 코드
이름 바꾸기 없음
CREATE OR REPLACE TABLE employees (
	employee_ID NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
	manager_YEAR NUMBER(10) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
	manager_MONTH NUMBER(10) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/
)
;
Copy
이름 바꾸기 포함
CREATE OR REPLACE TABLE employees (
	employee_ID NUMBER(11, 2),
	manager_YEAR NUMBER(3, 0),
	manager_MONTH NUMBER(2, 0)
)
;
Copy

모든 NUMBER 유형이 JSON 파일에 지정된 유형으로 마이그레이션되는 방식에 주목하십시오.