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 vers Snowflake SQL
Oracle PL/SQL vers :
JavaScript intégré dans Snowflake SQL
SnowConvert AI Terminology¶
Avant de nous perdre dans la magie de ces conversions de code, voici quelques termes/définitions afin que vous sachiez de quoi nous parlons lorsque nous commençons à les utiliser dans la documentation :
_ SQL (Structured Query Language) : _ langage standard pour stocker, manipuler et récupérer des données dans la plupart des architectures de bases de données modernes.
PL/SQL : _ Langage de procédure pour SQL. Il a été créé par Oracle et est toujours utilisé par Oracle comme langage de script pour les procédures stockées et les fonctions dans Oracle.
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.
Conversions de code¶
Oracle SQL vers 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.
Exemple¶
Voici un exemple de conversion d’une instruction CREATE TABLE
simple.
Code source :
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")
);
Code Snowflake SQL migré :
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"}}'
;
Dans ce SQL converti, vous remarquerez que nous convertissons de nombreuses choses. Quelques points forts :
Ajout d’un schéma
PUBLIC
par défaut pour tous les noms de tables et de vues si l’utilisateur n’en spécifie pasCREATE TABLE
àCREATE OR REPLACE TABLE
Conversions de types de données :
LONG
àVARCHAR
CLOB
àVARCHAR
ROWID
àVARCHAR
NVARCHAR2
àVARCHAR
RAW
àBINARY
Attributs du type de données :
GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL
àAS (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.
Exemple¶
Voici un exemple de conversion d’une CREATE PROCEDURE
simple dans Oracle qui effectue une insertion dans une table utilisée pour la connexion.
Note
Cet exemple sera utilisé à la fois pour Snowflake Scripting et JavaScript.
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;
Vers Snowflake Scripting¶
Snowflake Scripting fonctionne comme une extension de Snowflake SQL, il ajoute la prise en charge de la logique procédurale et cela permet de créer des procédures stockées et de répliquer des comportements et des instructions similaires à ceux d’Oracle PL/SQL.
Exemple de migration¶
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;
$$;
À JavaScript¶
JavaScript est appelé comme un langage de script, et toutes les instructions internes sont converties en JavaScript. Si vous souhaitez mieux comprendre l’API JavaScript, consultez cette documentation.
Exemple de migration¶
-- 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;`);
$$;
Dans ce SQL converti, vous remarquerez que nous avons effectué une conversion vers un nouveau langage (JavaScript) intégrée à Snowflake SQL. Il y a plus que quelques points forts, mais il suffit de dire que cette documentation contient tous les éléments essentiels pour comprendre ce type de conversion.
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.