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. Comment objects with missing dependencies: このフラグは、ユーザーが依存関係が欠落しているノードにコメントしたいかどうかを示します。

  2. 入力ファイルのエンコードを設定する: 詳しくは 一般変換設定 を確認してください。

注釈

すべてのサポート言語に適用される設定を確認するには、次の 記事 をご覧ください。

DB オブジェクト名の設定

DB オブジェクト名設定ページ

  1. スキーマ: 文字列値は、適用するカスタムスキーマ名を指定します。指定しない場合は、元のデータベース名が使用されます。例: DB1.myCustomSchema.Table1。

  2. データベース: 文字列値は、適用するカスタムデータベース名を指定します。例: MyCustomDB.PUBLIC.Table1。

  3. デフォルト: 上記のいずれの設定もオブジェクト名には使用されません。

コード準備設定

コード準備設定ページ

説明

Prepare my code: 解析と変換の前に入力コードを処理すべきかどうかを示すフラグです。これは、構文解析プロセスを改善するのに役立ちます。デフォルトでは、 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

「schema name」フォルダーの中には、入力コードのトップレベルオブジェクトと同じ数のファイルがあるはずです。また、複数の同じタイプのトップレベルオブジェクトが同じ名前を持つ場合、いくつかのファイルのコピーを持つことが可能です。この場合、ファイル名は昇順に列挙されます。

要件

トップレベルオブジェクトを識別するには、その宣言の前にタグをコメントに含める必要があります。抽出 スクリプトは、これらのタグを生成します。

タグは次の形式に従ってください。

<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です。

Reset Settings: 設定のリセットオプションは、すべてのページに表示されます。変更を加えた場合は、 SnowConvert AI を元のデフォルト設定にリセットすることができます。