SnowConvert AI - Oracle 변환 설정

일반 변환 설정

오브젝트 변환

Object Conversion Settings page

  1. 동의어 변환: 동의어를 변환할지 여부를 나타내는 플래그입니다. 기본적으로 true로 설정되어 있습니다.

  2. 패키지를 새 스키마로 변환: 패키지를 새 스키마로 변환할지 여부를 나타내는 플래그입니다.

    플래그를 활성화 및 비활성화하는 프로시저의 이름을 확인하십시오.

입력

CREATE OR REPLACE PACKAGE emp_mgmt AS
PROCEDURE remove_emp (employee_id NUMBER );
END emp_mgmt;

CREATE OR REPLACE PACKAGE BODY emp_mgmt AS 
PROCEDURE remove_emp (employee_id NUMBER) IS 
   BEGIN 
      DELETE FROM employees 
      WHERE employees.employee_id = remove_emp.employee_id; 
      tot_emps := tot_emps - 1; 
   END; 
END emp_mgmt; 
Copy

출력 기본값

CREATE SCHEMA IF NOT EXISTS emp_mgmt
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;

CREATE OR REPLACE PROCEDURE emp_mgmt.remove_emp (employee_id NUMBER(38, 18))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
   BEGIN
      DELETE FROM
         employees
         WHERE employees.employee_id = remove_emp.employee_id;
         tot_emps :=
                     !!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '-' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!
                     tot_emps - 1;
   END;
$$;
Copy

disablePackagesAsSchemas 매개 변수를 사용한 출력

-- Additional Params: --disablePackagesAsSchemas
CREATE OR REPLACE PROCEDURE EMP_MGMT_REMOVE_EMP (employee_id NUMBER(38, 18))
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
   BEGIN
      DELETE FROM
         employees
         WHERE employees.employee_id = remove_emp.employee_id;
         tot_emps :=
                     !!!RESOLVE EWI!!! /*** SSC-EWI-OR0036 - TYPES RESOLUTION ISSUES, ARITHMETIC OPERATION '-' MAY NOT BEHAVE CORRECTLY BETWEEN unknown AND Number ***/!!!
                     tot_emps - 1;
   END;
$$;
Copy
  1. 날짜를 타임스탬프로 변환:

SYSDATECURRENT_DATE 또는 CURRENT_TIMESTAMP 로 변환할지 여부를 나타내는 플래그입니다. 이는 TIMESTAMP 로 변환되는 모든 DATE 열에도 영향을 미칩니다.

입력

CREATE TABLE DATE_TABLE(
    DATE_COL DATE
);

SELECT SYSDATE FROM DUAL;
Copy

출력 기본값

CREATE OR REPLACE TABLE DATE_TABLE (
        DATE_COL TIMESTAMP /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
    ;

    SELECT
        CURRENT_TIMESTAMP()
    FROM DUAL;
Copy

disableDateAsTimestamp 매개 변수를 사용한 출력

-- Additional Params: --disableDateAsTimestamp
CREATE OR REPLACE TABLE DATE_TABLE (
        DATE_COL DATE /*** SSC-FDM-OR0042 - DATE TYPE COLUMN HAS A DIFFERENT BEHAVIOR IN SNOWFLAKE. ***/
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
    ;

    SELECT
        CURRENT_DATE()
    FROM DUAL;
Copy
  1. OUTER JOINS 을 ANSI 구문으로 변환: 외부 조인을 ANSI 구문으로만 변환할지 여부를 나타내는 플래그입니다.

Data type mappings

Data type mappings settings page

SnowConvert defines default mappings for data type conversions. However, you can point to a JSON file to customize specific data type mappings.

Customize data types: You can upload a JSON file to define specific data type transformation rules. This feature allows you to customize how data types are converted during migration.

Supported transformations include:

  • NUMBER to custom NUMBER with specific precision and scale

  • NUMBER to DECFLOAT for preserving exact decimal precision

When you upload a data type customization file:

  • SnowConvert AI applies your transformation rules during conversion

  • Numeric literals in INSERT statements targeting customized columns are automatically cast to the appropriate type

  • A TypeMappings Report is generated showing all data type transformations applied

JSON Structure:

The JSON file supports three ways to specify data type changes:

Method

Scope

Use Case

projectTypeChanges.types

Global

Transform all occurrences of a specific data type

projectTypeChanges.columns

Global

Transform columns matching a name pattern (case-insensitive substring match)

specificTableTypeChanges.tables

Table-specific

Transform specific columns in specific tables

경고

Use column name patterns carefully. The projectTypeChanges.columns rules only apply to columns with NUMBER data types, but they match by name pattern without considering the precision or scale of the original NUMBER type. This means a pattern like "MONTH" will transform all matching NUMBER columns to the target type, regardless of their original precision (e.g., NUMBER(10,0), NUMBER(38,18), or NUMBER without precision). Always review the TypeMappings Report after conversion to verify that the transformations were applied correctly.

Priority order: When multiple rules apply to the same column, SnowConvert AI uses this priority (highest to lowest):

  1. specificTableTypeChanges (most specific)

  2. projectTypeChanges.columns (name pattern)

  3. projectTypeChanges.types (global type mapping)

Example JSON configuration:

{
  "projectTypeChanges": {
    "types": {
      "NUMBER": "DECFLOAT",
      "NUMBER(10, 0)": "NUMBER(18, 0)"
    },
    "columns": [
      {
        "nameExpression": "PRICE",
        "targetType": "DECFLOAT"
      },
      {
        "nameExpression": ".*_AMOUNT$",
        "targetType": "NUMBER(18, 2)"
      }
    ]
  },
  "specificTableTypeChanges": {
    "tables": [
      {
        "tableName": "EMPLOYEES",
        "columns": [
          {
            "columnName": "SALARY",
            "targetType": "NUMBER(15, 2)"
          }
        ]
      }
    ]
  }
}
Copy

Download template: Copy and save the JSON structure above as your starting point.

Example transformation:

Given the following Oracle input code:

Oracle

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

And a JSON customization file with:

  • "NUMBER": "NUMBER(11, 2)" in projectTypeChanges.types

  • "NUMBER(10, 0)": "NUMBER(18, 0)" in projectTypeChanges.types

  • "MONTH" pattern targeting NUMBER(2,0) in projectTypeChanges.columns

  • SALARY column targeting NUMBER(15, 2) in specificTableTypeChanges for EMPLOYEES table

The output will be:

Snowflake

CREATE OR REPLACE TABLE employees (
    employee_ID NUMBER(11, 2),
    manager_YEAR NUMBER(18, 0),
    manager_MONTH NUMBER(2, 0),
    salary NUMBER(15, 2)
);
Copy

Column

Original Type

Transformed To

Rule Applied

employee_ID

NUMBER

NUMBER(11, 2)

projectTypeChanges.types

manager_YEAR

NUMBER(10, 0)

NUMBER(18, 0)

projectTypeChanges.types

manager_MONTH

NUMBER(10, 0)

NUMBER(2, 0)

projectTypeChanges.columns (MONTH pattern)

salary

NUMBER(12, 2)

NUMBER(15, 2)

specificTableTypeChanges (highest priority)

일반 결과 탭

일반 결과 탭

  1. 종속성이 누락된 오브젝트에 설명 추가: 이 플래그는 사용자가 종속성이 누락된 노드에 대해 주석을 추가할지 여부를 나타냅니다.

  2. 입력 파일의 인코딩 설정: 자세한 내용은 일반 변환 설정을 확인하세요.

참고

지원되는 모든 언어에 적용되는 설정을 검토하려면 다음 문서를 참조하십시오.

DB 오브젝트 이름 설정

DB 오브젝트 이름 설정 페이지

  1. 스키마: 문자열 값은 적용할 사용자 지정 스키마 이름을 지정합니다. 지정하지 않으면 원래 데이터베이스 이름이 사용됩니다. 예: DB1.myCustomSchema.Table1.

  2. 데이터베이스: 문자열 값은 적용할 사용자 지정 데이터베이스 이름을 지정합니다. 예: MyCustomDB.PUBLIC.Table1.

  3. 기본값: 위의 설정 중 어느 것도 오브젝트 이름에 사용되지 않습니다.

코드 설정 준비하기

코드 설정 페이지 준비

설명

내 코드 준비: 구문 분석 및 변환 전에 입력 코드를 처리해야 하는지 여부를 나타내는 플래그입니다. 이는 구문 분석 프로세스를 개선하는 데 유용할 수 있습니다. 기본적으로 FALSE로 설정됩니다.

입력 코드 최상위 오브젝트를 여러 파일로 분할합니다. 포함된 폴더는 다음과 같이 구성됩니다.

복사

└───A new folder named ''[input_folder_name]_Processed''
    └───Top-level object type
        └───Schema name
Copy

입력

├───in
│       DDL_Packages.sql
│       DDL_Procedures.sql
│       DDL_Tables.sql
Copy

출력

파일 이름이 입력 파일에 있는 최상위 오브젝트의 이름이라고 가정합니다.


├───in_Processed
    ├───package
    │   └───MY_SCHEMA
    │           MY_FIRST_PACKAGE.sql
    │           ANOTHER_PACKAGE.sql
    │
    ├───procedure
    │   └───MY_SCHEMA
    │           A_PROCEDURE.sql
    │           ANOTHER_PROCEDURE.sql
    │           YET_ANOTHER_PROCEDURE.sql
    │
    └───table
        └───MY_SCHEMA
                MY_TABLE.sql
                ADDITIONAL_TABLE.sql
                THIRD_TABLE.sql
Copy

“스키마 이름” 폴더 내부에는 입력 코드의 최상위 오브젝트 수만큼 파일이 있어야 합니다. 또한, 동일한 유형의 여러 최상위 오브젝트의 이름이 같은 경우 일부 파일의 복사본이 있을 수 있습니다. 이 경우 파일 이름은 오름차순으로 나열됩니다.

요구 사항

최상위 오브젝트를 식별하려면 태그를 해당 선언 전에 주석에 포함해야 합니다. 추출 스크립트는 이러한 태그를 생성합니다.

태그는 다음 형식을 따라야 합니다.

<sc-top_level_object_type>top_level_object_name</sc-top_level_object_type>
Copy

다음 예를 따를 수 있습니다.

/* <sc-table> MY_SCHEMA.MY_TABLE</sc-table> */
CREATE TABLE "MY_SCHEMA"."MY_TABLE" (
    "MY_COLUMN" VARCHAR2(128)
) ;
Copy

변환율 설정

변환율 설정 페이지

이 페이지에서 성공적으로 변환된 코드 비율을 코드 라인을 사용하여 계산할지, 아니면 총 문자 수를 사용하여 계산할지 선택할 수 있습니다. 문자 변환율 이 기본 옵션입니다. 전체 요금 설명서는 설명서 페이지에서 확인할 수 있습니다.

저장 프로시저 대상 언어 설정

저장 프로시저 대상 언어 설정 페이지

이 페이지에서 저장 프로시저를 Snow SQL 에 내장된 JavaScript 로 마이그레이션할지, Snowflake Scripting으로 마이그레이션할지 선택할 수 있습니다. 기본 옵션은 Snowflake Scripting입니다.

설정 재설정: 설정 재설정 옵션은 모든 페이지에 표시됩니다. 변경한 경우 SnowConvert AI를 원래 기본 설정으로 재설정할 수 있습니다.