SnowConvert AI - Oracle 변환 설정¶
일반 변환 설정¶
오브젝트 변환¶

동의어 변환: 동의어를 변환할지 여부를 나타내는 플래그입니다. 기본적으로 true로 설정되어 있습니다.
패키지를 새 스키마로 변환: 패키지를 새 스키마로 변환할지 여부를 나타내는 플래그입니다.
플래그를 활성화 및 비활성화하는 프로시저의 이름을 확인하십시오.
입력
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;
출력 기본값
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;
$$;
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;
$$;
날짜를 타임스탬프로 변환:
SYSDATE 를 CURRENT_DATE 또는 CURRENT_TIMESTAMP 로 변환할지 여부를 나타내는 플래그입니다. 이는 TIMESTAMP 로 변환되는 모든 DATE 열에도 영향을 미칩니다.
입력
CREATE TABLE DATE_TABLE(
DATE_COL DATE
);
SELECT SYSDATE FROM DUAL;
출력 기본값
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;
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;
OUTER JOINS 을 ANSI 구문으로 변환: 외부 조인을 ANSI 구문으로만 변환할지 여부를 나타내는 플래그입니다.
Data type mappings¶

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:
NUMBERto customNUMBERwith specific precision and scaleNUMBERtoDECFLOATfor preserving exact decimal precision
When you upload a data type customization file:
SnowConvert AI applies your transformation rules during conversion
Numeric literals in
INSERTstatements targeting customized columns are automatically cast to the appropriate typeA 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 |
|---|---|---|
|
Global |
Transform all occurrences of a specific data type |
|
Global |
Transform columns matching a name pattern (case-insensitive substring match) |
|
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):
specificTableTypeChanges(most specific)projectTypeChanges.columns(name pattern)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)"
}
]
}
]
}
}
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)
);
And a JSON customization file with:
"NUMBER": "NUMBER(11, 2)"inprojectTypeChanges.types"NUMBER(10, 0)": "NUMBER(18, 0)"inprojectTypeChanges.types"MONTH"pattern targetingNUMBER(2,0)inprojectTypeChanges.columnsSALARYcolumn targetingNUMBER(15, 2)inspecificTableTypeChangesfor 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)
);
Column |
Original Type |
Transformed To |
Rule Applied |
|---|---|---|---|
employee_ID |
NUMBER |
NUMBER(11, 2) |
|
manager_YEAR |
NUMBER(10, 0) |
NUMBER(18, 0) |
|
manager_MONTH |
NUMBER(10, 0) |
NUMBER(2, 0) |
|
salary |
NUMBER(12, 2) |
NUMBER(15, 2) |
|
일반 결과 탭¶

종속성이 누락된 오브젝트에 설명 추가: 이 플래그는 사용자가 종속성이 누락된 노드에 대해 주석을 추가할지 여부를 나타냅니다.
입력 파일의 인코딩 설정: 자세한 내용은 일반 변환 설정을 확인하세요.
참고
지원되는 모든 언어에 적용되는 설정을 검토하려면 다음 문서를 참조하십시오.
DB 오브젝트 이름 설정¶

스키마: 문자열 값은 적용할 사용자 지정 스키마 이름을 지정합니다. 지정하지 않으면 원래 데이터베이스 이름이 사용됩니다. 예: DB1.myCustomSchema.Table1.
데이터베이스: 문자열 값은 적용할 사용자 지정 데이터베이스 이름을 지정합니다. 예: MyCustomDB.PUBLIC.Table1.
기본값: 위의 설정 중 어느 것도 오브젝트 이름에 사용되지 않습니다.
코드 설정 준비하기¶
.png)
설명¶
내 코드 준비: 구문 분석 및 변환 전에 입력 코드를 처리해야 하는지 여부를 나타내는 플래그입니다. 이는 구문 분석 프로세스를 개선하는 데 유용할 수 있습니다. 기본적으로 FALSE로 설정됩니다.
입력 코드 최상위 오브젝트를 여러 파일로 분할합니다. 포함된 폴더는 다음과 같이 구성됩니다.
복사
└───A new folder named ''[input_folder_name]_Processed''
└───Top-level object type
└───Schema name
예¶
입력¶
├───in
│ DDL_Packages.sql
│ DDL_Procedures.sql
│ DDL_Tables.sql
출력¶
파일 이름이 입력 파일에 있는 최상위 오브젝트의 이름이라고 가정합니다.
├───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
“스키마 이름” 폴더 내부에는 입력 코드의 최상위 오브젝트 수만큼 파일이 있어야 합니다. 또한, 동일한 유형의 여러 최상위 오브젝트의 이름이 같은 경우 일부 파일의 복사본이 있을 수 있습니다. 이 경우 파일 이름은 오름차순으로 나열됩니다.

요구 사항¶
최상위 오브젝트를 식별하려면 태그를 해당 선언 전에 주석에 포함해야 합니다. 추출 스크립트는 이러한 태그를 생성합니다.
태그는 다음 형식을 따라야 합니다.
<sc-top_level_object_type>top_level_object_name</sc-top_level_object_type>
다음 예를 따를 수 있습니다.
/* <sc-table> MY_SCHEMA.MY_TABLE</sc-table> */
CREATE TABLE "MY_SCHEMA"."MY_TABLE" (
"MY_COLUMN" VARCHAR2(128)
) ;
변환율 설정¶

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

이 페이지에서 저장 프로시저를 Snow SQL 에 내장된 JavaScript 로 마이그레이션할지, Snowflake Scripting으로 마이그레이션할지 선택할 수 있습니다. 기본 옵션은 Snowflake Scripting입니다.
설정 재설정: 설정 재설정 옵션은 모든 페이지에 표시됩니다. 변경한 경우 SnowConvert AI를 원래 기본 설정으로 재설정할 수 있습니다.