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 para Snowflake SQL
Oracle PL/SQL para:
JavaScript incorporado no Snowflake SQL
SnowConvert AI Terminology¶
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: 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.
Conversões de código¶
Oracle SQL para 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.
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")
);
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"}}'
;
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 umCREATETABLE
paraCREATEORREPLACETABLE
Conversões do tipo de dados:
LONG
aVARCHAR
CLOB
aVARCHAR
ROWID
aVARCHAR
NVARCHAR2
aVARCHAR
RAW
aBINARY
Atributos do tipo de dados:
GENERATED ALWAYS AS (COL1 * COL2) VIRTUAL
aAS (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.
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;
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;
$$;
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;`);
$$;
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.
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.