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 から Snowflake SQL へ
Oracle PL/SQL から
Snowflake SQL に埋め込まれた JavaScript へ
SnowConvert AI Terminology¶
これらのコード変換のマジックに没頭する前に、ここで用語/定義のいくつかを紹介し、さまざまなドキュメントでこれらが使用されるときにその意味が分かるようにしておきます。
_ SQL (構造化クエリ言語): _ 大半の現代的なデータベースアーキテクチャーにおけるデータの保存、操作、検索のための標準言語。
_ PL/SQL: _ SQL のためのプロシージャ言語。これはOracleによって作成され、現在でも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.
コード変換¶
Oracle SQL から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.
例¶
以下は、単純な CREATE TABLE
ステートメントの変換例です。
ソースコード:
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")
);
移行されたSnowflake SQL コード:
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"}}'
;
この変換された SQL には、多数の変換されたものがあることにお気づきでしょう。ハイライトの一部:
ユーザーが指定しない場合、すべてのテーブルと表示名にデフォルトで
PUBLIC
スキーマを追加CREATE TABLE
からCREATE OR REPLACE TABLE
へデータ型の変換:
LONG
からVARCHAR
へCLOB
からVARCHAR
へROWID
からVARCHAR
へNVARCHAR2
からVARCHAR
へRAW
からBINARY
へ
データ型属性:
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.
例¶
ログに使用されるテーブルに挿入する、Oracleの単純な CREATE PROCEDURE
の変換の例を示します。
注釈
この例は、Snowflake Scriptingと 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;
Snowflake Scriptingへ¶
Snowflake Scriptingは、Snowflake SQL の拡張機能として動作し、プロシージャロジックのサポートを追加します。これにより、ストアドプロシージャを作成し、Oracle PL/SQL の同様の動作やステートメントを再現することができます。
移行例¶
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 がスクリプト言語として呼び出される場合、すべての内部ステートメントは JavaScript に変換されます。JavaScript API の詳細については、 このドキュメント をご確認ください。
移行例¶
-- 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;`);
$$;
この変換された SQL では、Snowflake SQL に組み込まれた新しい言語(JavaScript)に変換されていることがわかります。ハイライトいくつかありますが、このドキュメントにはこの種の変換を理解するための要点がすべて書かれていると言っていいでしょう。
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.