SnowConvert: Oracle¶
Was ist SnowConvert for Oracle?¶
SnowConvert ist eine Software, die Oracle SQL und PL/SQL versteht und die folgenden Konvertierungen durchführt:
Oracle SQL zu Snowflake SQL
Oracle PL/SQL zu:
SnowConvert-Terminologie¶
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 _ : Die Software, die Ihre Oracle-Dateien sicher und automatisch in die Snowflake-Clouddatenplattform konvertiert.
Konvertierungsregel oder Transformationsregel: _ Regeln, die es SnowConvert ermöglichen, einen Teil des Quellcodes zu konvertieren und den erwarteten Zielcode zu bestimmen.
Parsen: _ Parsen oder Parsing ist ein erster Prozess, der von SnowConvert durchgeführt wird, um den Quellcode zu verstehen und eine interne Datenstruktur aufzubauen, um die Konvertierungsregeln zu verarbeiten.
Sehen wir uns nun einige der Codekonvertierungen an, die Snowflake SnowConvert durchführen kann.
Codekonvertierungen¶
Oracle SQL zu Snowflake SQL¶
SnowConvert for Oracle akzeptiert Oracle-Quellcode in SQL und konvertiert die Datendefinitionssprache (Data Definition Language, DDL), Datenbearbeitungssprache (Data Manipulation Language,DML) und Funktionen im Quellcode in das entsprechende 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)
Weitere Informationen über Datentypen und ihre Entsprechung finden Sie in: Data Types. Weitere Beispiele finden Sie im Rest der Dokumentation.
Oracle PL/SQL¶
SnowConvert akzeptiert Oracle-Funktionen und gespeicherte Oracle-Prozeduren (PL/SQL) und konvertiert sie entweder in Snowflake Scripting oder in JavaScript, das in Snowflake-SQL eingebettet ist. Die Oracle-Syntax CREATE PROCEDURE
und REPLACE PROCEDURE
wird durch die Snowflake-Syntax CREATE OR REPLACE PROCEDURE
ersetzt.
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 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.
Die Zeile // ... Necessary SnowConvert Helpers are inserted here ...
enthält tatsächlich die SnowConvert-JavaScript-Helfer. Sie können umfangreich sein, daher wurden sie in diesem ersten Beispiel entfernt.
¶
Und das war’s! Snowflake SnowConvert erspart Ihnen den Ärger und die Frustration beim Wechsel der Datenplattform. Mehr über die ersten Schritte mit SnowConvert for Oracle erfahren Sie auf der nächsten Seite.