SnowConvert : Oracle¶
Qu’est-ce que SnowConvert pour Oracle ?¶
SnowConvert est un logiciel qui comprend Oracle SQL et PL/SQL, et effectue les conversions suivantes :
Oracle SQL vers Snowflake SQL
Oracle PL/SQL vers :
JavaScript intégré dans Snowflake SQL
SnowConvert Terminologie¶
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 _ ** :** logiciel qui convertit automatiquement et en toute sécurité vos fichiers Oracle vers la plateforme de données Cloud Snowflake.
_ Règle de conversion ou de transformation : _ Règles qui permettent à SnowConvert de convertir une partie du code source et de déterminer le code cible attendu.
_ Parse : _ Parse ou l’analyse est un processus initial effectué par SnowConvert pour comprendre le code source et construire une structure de données interne pour traiter les règles de conversion.
Voyons maintenant quelques-unes des conversions de code que Snowflake SnowConvert peut effectuer.
Conversions de code¶
Oracle SQL vers Snowflake SQL¶
SnowConvert pour Oracle prend le code source Oracle dans SQL et convertit le langage de définition des données (DDL), le langage de manipulation des données (DML) et les fonctions du code source en SQL correspondants dans 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)
Pour plus d’informations sur les types de données et leurs équivalents : Types de données. Vous trouverez d’autres exemples dans le reste de la documentation.
Oracle PL/SQL¶
SnowConvert prend les procédures stockées et les fonctions Oracle (PL/SQL) et les convertit en procédures Snowflake Scripting ou JavaScript intégrées dans Snowflake SQL. La syntaxe CREATE PROCEDURE
et REPLACE PROCEDURE
Oracle est remplacée par la syntaxe CREATE OR REPLACE PROCEDURE
Snowflake.
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 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.
La ligne qui indique // ... Les aides SnowConvert nécessaires sont insérées ici ...
contiendra les assistants SnowConvert JavaScript. Elles peuvent être longues, c’est pourquoi elles sont supprimées de ce premier exemple.
¶
Et c’est tout ! Snowflake SnowConvert vous évite de changer de plateforme de données. Pour en savoir plus sur la prise en main de SnowConvert pour Oracle, consultez la page suivante.