SnowConvert AI – Oracle-Konvertierungseinstellungen¶
Allgemeine Konvertierungseinstellungen¶
Objektkonvertierung¶

Transform Synonyms: Flag, das angibt, ob Synonyme transformiert werden sollen. Standardmäßig ist es auf true festgelegt.
Transform Packages to new Schemas: Flag, das angibt, ob die Pakete in neue Schemas transformiert werden sollen.
Bitte überprüfen Sie die Benennung der Prozedur zum Aktivieren und Deaktivieren des Flags:
Eingabe
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;
Ausgabestandard
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;
$$;
Ausgabe mit Parameter 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;
$$;
Transform Date as Timestamp:
Kennzeichen, das angibt, ob SYSDATE in CURRENT_DATE oder CURRENT_TIMESTAMP umgewandelt werden soll. Dies betrifft auch alle Spalten DATE, die in TIMESTAMP umgewandelt werden.
Eingabe
CREATE TABLE DATE_TABLE(
DATE_COL DATE
);
SELECT SYSDATE FROM DUAL;
Ausgabestandard
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;
Ausgabe mit Parameter 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;
Transform OUTER JOINS to ANSI Syntax: Flag, das angibt, ob Outer Joins nur in die ANSI-Syntax transformiert werden sollen.
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 |
Warnung
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) |
|
Registerkarte „General Results“¶

Comment objects with missing dependencies: Dieses Flag gibt an, ob Benutzende einen Kommentar zu Knoten mit fehlenden Abhängigkeiten abgeben möchten.
Set encoding of the input files: Weitere Details dazu finden Sie unter Allgemeine Konvertierungseinstellungen.
Bemerkung
Die Einstellungen, die für alle unterstützten Sprachen gelten, finden Sie in dem folgenden Artikel.
DB Objects Names Settings¶

Schema: Der Zeichenfolgenwert gibt den benutzerdefinierten Schemanamen an, der angewendet werden soll. Wenn er nicht angegeben ist, wird der ursprüngliche Datenbankname verwendet. Beispiel: DB1.myCustomSchema.Table1.
Database: Der Zeichenfolgenwert gibt den Namen benutzerdefinierten Datenbanknamen an, die angewendet werden soll. Beispiel: MyCustomDB.PUBLIC.Table1.
Default: Keine der oben genannten Einstellungen wird in den Objektnamen verwendet.
Prepare Code Settings¶

Beschreibung¶
Prepare my code: Flag, das angibt, ob der Eingabecode vor dem Parsen und Transformieren verarbeitet werden soll. Dies kann nützlich sein, um den Parsing-Prozess zu verbessern. Standardmäßig ist das Flag auf FALSE festgelegt.
Teilt die Eingabecode-Objekte der obersten Ebene in mehrere Dateien auf. Die darin enthaltenen Ordner wären wie folgt organisiert:
Kopieren
└───A new folder named ''[input_folder_name]_Processed''
└───Top-level object type
└───Schema name
Beispiel¶
Eingabe¶
├───in
│ DDL_Packages.sql
│ DDL_Procedures.sql
│ DDL_Tables.sql
Ausgabe¶
Es wird davon ausgegangen, dass der Name der Dateien dem Namen der Objekte der obersten Ebene in den Eingabedateien entspricht.
├───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
Innerhalb des Ordners „schema name“ sollten sich so viele Dateien befinden, wie es Objekte der obersten Ebene im Eingabecode gibt. Außerdem ist es möglich, dass einige Dateien mehrfach vorhanden sind, wenn mehrere Objekte desselben Typs auf oberster Ebene denselben Namen haben. In diesem Fall werden die Dateinamen in aufsteigender Reihenfolge aufgeführt.

Anforderungen ¶
Um Objekte der obersten Ebene zu identifizieren, muss vor ihrer Deklaration ein Tag in einen Kommentar eingefügt werden. Diese Tags werden von unseren Skripten für die Extraktion erzeugt.
Das Tag sollte das folgende Format haben:
<sc-top_level_object_type>top_level_object_name</sc-top_level_object_type>
Sie können dem nächsten Beispiel folgen:
/* <sc-table> MY_SCHEMA.MY_TABLE</sc-table> */
CREATE TABLE "MY_SCHEMA"."MY_TABLE" (
"MY_COLUMN" VARCHAR2(128)
) ;
Conversion Rate Settings¶

Auf dieser Seite können Sie wählen, ob der Prozentsatz des erfolgreich konvertierten Codes anhand der Codezeilen oder anhand der Gesamtzahl der Zeichen berechnet werden soll. Character Conversion Rate ist die Standardoption. Sie können die gesamte Dokumentation der Konvertierungsraten auf der Dokumentationsseite einsehen.
Stored Procedures Target Languages Settings¶

Auf dieser Seite können Sie wählen, ob gespeicherte Prozeduren nach in Snowflake SQL eingebettetes JavaScript oder nach Snowflake Scripting migriert werden sollen. Die Standardoption ist Snowflake Scripting.
Reset Settings: Diese Option zum Zurücksetzen der Einstellungen wird auf jeder Seite angezeigt. Wenn Sie Änderungen vorgenommen haben, können Sie SnowConvert AI auf die ursprünglichen Standardeinstellungen zurücksetzen.