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
로
데이터 타입 특성:
GENERATEDALWAYSAS (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.
예¶
다음은 로깅에 사용되는 테이블에 삽입을 수행하는 간단한 CREATEPROCEDURE
를 Oracle에서 변환하는 예제입니다.
참고
이 예제는 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.