SnowConvert AI - Oracle¶
What is SnowConvert AI for Oracle?¶
SnowConvert AI is a software that understands Oracle SQL and PL/SQL, and performs the following conversions:
Oracle SQL zu Snowflake SQL
Oracle PL/SQL zu:
SnowConvert AI Terminology¶
Bevor wir uns in der Magie dieser Codekonvertierungen verlieren, hier ein paar Begriffe/Definitionen, damit Sie wissen, was wir meinen, wenn wir sie in der gesamten Dokumentation verwenden:
SQL (Structured Query Language): _ Die Standardsprache zum Speichern, Bearbeiten und Abfragen von Daten in den meisten modernen Datenbankarchitekturen.
_ PL/SQL: _ prozedurale Sprache (Procedural Language) für SQL. Diese wurde von Oracle entwickelt und wird von Oracle immer noch als Skriptsprache für gespeicherte Prozeduren und Funktionen in Oracle verwendet.
SnowConvert AI: The software that converts securely and automatically your Oracle files to the Snowflake cloud data platform.
Conversion rule or transformation rule: Rules that allow SnowConvert AI to convert from a portion of source code and determine the expected target code.
Parse: Parse or parsing is an initial process done by SnowConvert AI to understand the source code, and build up an internal data structure to process the conversion rules.
Let’s dive in to some of the code conversions that Snowflake SnowConvert AI can perform.
Codekonvertierungen¶
Oracle SQL zu Snowflake SQL¶
SnowConvert AI for Oracle takes in Oracle source code in SQL and converts the Data Definition Language (DDL), Data Manipulation Language (DML), and functions in the source code to the corresponding SQL in Snowflake SQL.
Beispiel¶
Hier ist ein Beispiel für die Konvertierung einer einfachen CREATE TABLE
-Anweisung.
Quellcode:
CREATE TABLE "MyTable"
(
"COL1" NUMBER,
"COL2" NUMBER,
"COL3" NUMBER GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL,
"COL4" LONG,
"COL5" CLOB,
"COL6" ROWID,
"COL7" NVARCHAR2(10),
"COL8" RAW(255),
CONSTRAINT "PK" PRIMARY KEY ("COL1")
);
Der migrierte Snowflake-SQL-Code:
CREATE OR REPLACE TABLE "MyTable"
(
"COL1" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
"COL2" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
"COL3" NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/ AS (COL1 * COL2),
"COL4" VARCHAR,
"COL5" VARCHAR,
"COL6" VARCHAR(18) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - ROWID DATA TYPE CONVERTED TO VARCHAR ***/!!!,
"COL7" VARCHAR(10),
"COL8" BINARY,
CONSTRAINT "PK" PRIMARY KEY ("COL1")
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
;
Sie werden feststellen, dass in diesem konvertierten SQL vieles konvertiert wurde. Beispiele für Konvertierungen:
Standardmäßiges Hinzufügen des
PUBLIC
-Schemas für alle Tabellen- und Ansichtsnamen, wenn der Benutzer kein Schema angibtCREATE TABLE
inCREATE OR REPLACE TABLE
Datentypkonvertierungen:
LONG
zuVARCHAR
CLOB
zuVARCHAR
ROWID
zuVARCHAR
NVARCHAR2
zuVARCHAR
RAW
zuBINARY
Datentypattribute:
GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL
zuAS (COL1 * COL2)
For more information about data types and their equivalent: Data Types. More examples can be found in the rest of the documentation.
Oracle PL/SQL¶
SnowConvert AI takes Oracle stored procedures and functions (PL/SQL) and converts them to either Snowflake Scripting or JavaScript embedded into Snowflake SQL. Oracle CREATE PROCEDURE
and REPLACE PROCEDURE
syntax is replaced by Snowflake CREATE OR REPLACE PROCEDURE
syntax.
Beispiel¶
Hier ein Beispiel für die Konvertierung einer einfachen CREATE PROCEDURE
in Oracle, die eine Einfügung in eine für die Protokollierung verwendete Tabelle vornimmt.
Bemerkung
Dieses Beispiel wird sowohl für Snowflake Scripting als auch für JavaScript verwendet.
CREATE OR REPLACE PROCEDURE SC_DEMO.PROC_LOG
(final_proc VARCHAR2,
final_message VARCHAR2,
logger_type VARCHAR2 DEFAULT 'I')
AS
BEGIN
INSERT INTO SC_DEMO.PROC_LOG_TABLE
VALUES (SC_DEMO.final_logging_seq.NEXTVAL,
sysdate,
SUBSTR(logger_type, 1, 1),
SUBSTR(final_proc, 1, 30),
SUBSTR(final_message, 1, 1024));
COMMIT;
END;
Konvertierung in Snowflake Scripting¶
Snowflake Scripting ist eine Erweiterung von Snowflake SQL und bietet Unterstützung für prozedurale Logik. Daher können wir gespeicherte Prozeduren erstellen und ähnliche Verhaltensweisen und Anweisungen von Oracle PL/SQL replizieren.
Migriertes Beispiel¶
CREATE OR REPLACE PROCEDURE SC_DEMO.PROC_LOG
(final_proc VARCHAR, final_message VARCHAR,
logger_type VARCHAR DEFAULT 'I')
RETURNS VARCHAR
LANGUAGE SQL
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
BEGIN
INSERT INTO SC_DEMO.PROC_LOG_TABLE
VALUES (SC_DEMO.final_logging_seq.NEXTVAL, CURRENT_TIMESTAMP(),
SUBSTR(:logger_type, 1, 1),
SUBSTR(:final_proc, 1, 30),
SUBSTR(:final_message, 1, 1024));
--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT;
END;
$$;
Bis JavaScript¶
JavaScript wird als Skriptsprache aufgerufen, und alle inneren Anweisungen werde in JavaScript umgewandelt. Wenn Sie die JavaScript-API besser verstehen möchten, lesen Sie diese Dokumentation.
Migriertes Beispiel¶
-- Additional Params: -t JavaScript
CREATE OR REPLACE PROCEDURE SC_DEMO.PROC_LOG
(final_proc STRING, final_message STRING,
logger_type STRING DEFAULT 'I')
RETURNS STRING
LANGUAGE JAVASCRIPT
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
EXECUTE AS CALLER
AS
$$
// SnowConvert AI Helpers Code section is omitted.
EXEC(`INSERT INTO SC_DEMO.PROC_LOG_TABLE
VALUES (SC_DEMO.final_logging_seq.NEXTVAL, CURRENT_TIMESTAMP(),
SUBSTR(?, 1, 1),
SUBSTR(?, 1, 30),
SUBSTR(?, 1, 1024))`,[LOGGER_TYPE,FINAL_PROC,FINAL_MESSAGE]);
EXEC(`--** SSC-FDM-OR0012 - COMMIT REQUIRES THE APPROPRIATE SETUP TO WORK AS INTENDED **
COMMIT;`);
$$;
In diesem konvertierten SQL werden Sie feststellen, dass wir in eine neue Sprache (JavaScript) konvertiert haben, die in Snowflake SQL eingebettet ist. Es gibt mehr als ein paar Glanzpunkte, aber diese Dokumentation enthält alles Wesentliche, um diese Art der Konvertierung zu verstehen.
The line that states // ... Necessary SnowConvert AI Helpers are inserted here ...
will actually have the SnowConvert AI JavaScript Helpers. They can be lengthy, so they are removed from this first example.
¶
And that’s it! Snowflake SnowConvert AI takes the pain and frustration out of changing data platforms. Learn more about getting started with SnowConvert AI for Oracle on the next page.