SnowConvert AI - Oracle¶
Oracle用のSnowConvert AIとは¶
SnowConvert AIは、Oracle SQL および PL/SQL を理解し、以下の変換を行うソフトウェアです。
Oracle SQL から Snowflake SQL へ
Oracle PL/SQL から
Snowflake SQL に埋め込まれた JavaScript へ
SnowConvert AIの用語¶
これらのコード変換のマジックに没頭する前に、ここで用語/定義のいくつかを紹介し、さまざまなドキュメントでこれらが使用されるときにその意味が分かるようにしておきます。
_ SQL (構造化クエリ言語): _ 大半の現代的なデータベースアーキテクチャーにおけるデータの保存、操作、検索のための標準言語。
_ PL/SQL: _ SQL のためのプロシージャ言語。これはOracleによって作成され、現在でもOracleのストアドプロシージャや関数のスクリプト言語として使用されています。
SnowConvert AI: Oracleファイルを安全かつ自動的にSnowflakeクラウドデータプラットフォームに変換するソフトウェアです。
変換ルールまたは変革ルール: SnowConvert AIがソースコードの一部から変換し、期待されるターゲットコードを決定するためのルール。
パース: パースまたは構文解析は、SnowConvert AIがソースコードを理解し、変換ルールを処理するための内部データ構造を構築するために行われる初期処理です。
それでは、Snowflake SnowConvert AI で実行できるコード変換のいくつかを確認しましょう。
コード変換¶
Oracle SQL からSnowflake SQL へ¶
Oracle用SnowConvert AIは、SQLのOracleソースコードを取り込み、ソースコード内のデータ定義言語(DDL)、データ操作言語(DML)、および関数を、Snowflake SQLの対応する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)へ
データ型とそれに相当するものの詳細については、データ型 を参照してください。その他の例については、ドキュメントの他の部分で確認できます。
Oracle PL/SQL¶
SnowConvert AIは、Oracleストアドプロシージャと関数( PL/SQL )を受け取り、それらを Snowflakeスクリプト または JavaScript に変換し、Snowflake SQLに埋め込みます。 Oracleの CREATE PROCEDURE および REPLACE PROCEDURE 構文は、Snowflakeの CREATE OR REPLACE PROCEDURE 構文に置き換えられます。
例¶
ログに使用されるテーブルに挿入する、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)に変換されていることがわかります。 ハイライトいくつかありますが、このドキュメントにはこの種の変換を理解するための要点がすべて書かれていると言っていいでしょう。
// ...Necessary SnowConvert AI Helpers are inserted here ... と記載された行には、実際には SnowConvert AI JavaScriptヘルパー を持ちます。これらは長くなるので、この最初の例からは削除されています。
¶
これで完了です。Snowflake SnowConvert AIは、データプラットフォームの変更に伴う苦痛やフラストレーションを解消します。次のページでは、Oracle用のSnowConvert AIの使用開始について詳しく説明します。