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 :

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")
);
Copy

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"}}'
  ;
Copy

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 pas

  • CREATE 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;
Copy

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;
$$;
Copy

À 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;`);
$$;
Copy

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.