SnowConvert AI - Oracle

O que é o SnowConvert AI para Oracle?

O SnowConvert SQL é um software que entende Oracle PL e SQL/SQL e realiza as seguintes conversões:

Terminologia do SnowConvert AI

Antes de nos perdermos na mágica dessas conversões de código, aqui estão alguns termos/definições para que você saiba o que queremos dizer quando começarmos a usá-los em toda a documentação:

  • _ SQL (Structured Query Language): _ A linguagem padrão para armazenar, manipular e recuperar dados na maioria das arquiteturas modernas de banco de dados.

  • _ PL/SQL: _ Linguagem de procedimento para SQL. Foi criada pela Oracle e ainda é usada pela Oracle como a linguagem de script para procedimentos e funções armazenados no Oracle.

  • SnowConvert AI: O software que converte de forma segura e automática seus arquivos Oracle para a plataforma de dados em nuvem Snowflake.

  • Regra de conversão ou regra de transformação: Regras que permitem ao SnowConvert AI converter uma parte do código-fonte e determinar o código de destino esperado.

  • Análise: análise ou parsing é um processo inicial feito pelo SnowConvert AI para entender o código-fonte e criar uma estrutura de dados interna necessária para processar as regras de conversão.

Vamos analisar algumas das conversões de código que o SnowConvert AIdo Snowflake pode executar.

Conversões de código

Oracle SQL para Snowflake SQL

O SnowConvert AI para Oracle recebe código-fonte Oracle em SQL e converte a Linguagem de Definição de Dados (DDL), Linguagem de Manipulação de Dados (DML), e as funções do código-fonte para o SQL correspondente no Snowflake SQL.

Exemplo

Aqui está um exemplo da conversão de uma instrução simples de CREATE TABLE.

O código-fonte:

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

O código do Snowflake SQL migrado:

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

Neste SQL convertido, você vê que estamos convertendo muitas coisas. Alguns destaques:

  • Adição do esquema PUBLIC por padrão para todos os nomes de tabelas e exibições se o usuário não especificar um

  • CREATETABLE para CREATEORREPLACETABLE

  • Conversões do tipo de dados:

    • LONG a VARCHAR

    • CLOB a VARCHAR

    • ROWID a VARCHAR

    • NVARCHAR2 a VARCHAR

    • RAW a BINARY

  • Atributos do tipo de dados: GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL a AS (COL1 * COL2)

Para obter mais informações sobre tipos de dados e seus equivalentes: Tipos de dados. Mais exemplos podem ser encontrados no restante da documentação.

Oracle PL/SQL

O SnowConvert AI recebe procedimentos armazenados e funções do Oracle (PL/SQL) e os converte em Script Snowflake ou JavaScript incorporados no Snowflake SQL. As sintaxes Oracle CREATE PROCEDURE e REPLACE PROCEDURE são substituídas pela sintaxe Snowflake CREATE OR REPLACE PROCEDURE.

Exemplo

Aqui está um exemplo da conversão de um simples CREATE PROCEDURE no Oracle que faz uma inserção em uma tabela usada para registro.

Nota

Este exemplo será usado tanto para o Snowflake Scripting quanto para o 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

Para o Snowflake Scripting

O Snowflake Scripting funciona como uma extensão do Snowflake SQL, adicionando suporte à lógica processual, o que nos permite criar procedimentos armazenados e replicar comportamentos e instruções semelhantes do Oracle PL/SQL.

Exemplo de migração

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

Para JavaScript

JavaScript é chamado como uma linguagem de script, todas as instruções internas são convertidas para JavaScript. Se quiser entender melhor o JavaScript API, consulte esta documentação.

Exemplo de migração

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

Neste SQL convertido, você notará que convertemos para uma nova linguagem (JavaScript) incorporada ao Snowflake SQL. Há mais do que alguns destaques, mas basta dizer que essa documentação tem todos os elementos essenciais para entender esse tipo de conversão.

A linha que indica // ... Os Ajudantes do SnowConvert AI necessários são inseridos aqui... terá, de fato, os Ajudantes **SnowConvert AI JavaScript **. Eles podem ser extensos, por isso foram removidos deste primeiro exemplo.

E é isso! O Snowflake SnowConvert AI elimina o trabalho e a frustração de mudar de plataformas de dados. Saiba mais sobre como começar a usar o SnowConvert AI para Oracle na página seguinte.