SnowConvert: Oracle¶
Oracle용 SnowConvert 란 무엇인가요?¶
SnowConvert 는 Oracle SQL 및 PL/SQL 을 이해하고 다음과 같은 변환을 수행하는 소프트웨어입니다.
Oracle SQL 에서 Snowflake SQL 로
Oracle PL / SQL 로:
Snowflake SQL 에 임베드된 JavaScript
SnowConvert 용어¶
이러한 코드 변환의 마법에 빠져들기 전에 몇 가지 용어/정의에 대한 설명서를 통해 그 의미를 이해할 수 있도록 몇 가지 용어를 소개합니다.
_ SQL (구조화된 쿼리 언어): _ 대부분의 최신 데이터베이스 아키텍처에서 데이터를 저장, 조작, 검색하기 위한 표준 언어입니다.
_ PL/SQL: _ SQL 의 프로시저 언어. 이것은 Oracle에서 생성했으며, 여전히 Oracle에서 저장 프로시저 및 함수를 위한 스크립트 언어로 사용되고 있습니다.
_ SnowConvert _ : Oracle 파일을 안전하고 자동으로 Snowflake 클라우드 데이터 플랫폼으로 변환하는 소프트웨어입니다.
_ 변환 규칙 또는 변환 규칙: _ SnowConvert 가 소스 코드의 일부에서 변환하고 예상 대상 코드를 결정할 수 있도록 허용하는 규칙입니다.
_ 구문 분석: _ 구문 분석 또는 구문 분석은 SnowConvert 가 소스 코드를 이해하고 변환 규칙을 처리하기 위해 내부 데이터 구조를 구축하는 초기 과정입니다.
Snowflake SnowConvert 가 수행할 수 있는 몇 가지 코드 변환에 대해 자세히 알아보겠습니다.
코드 변환¶
Oracle SQL 에서 Snowflake SQL 로¶
SnowConvert 의 경우 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
로
데이터 타입 특성:
GENERATEDALWAYSAS (COL1*COL2) VIRTUAL
~AS (COL1*COL2)
데이터 타입과 그에 상응하는 데이터 타입에 대한 자세한 내용은 데이터 타입 섹션을 참조하십시오. 더 많은 예제는 나머지 설명서에서 확인할 수 있습니다.
Oracle PL/SQL¶
SnowConvert 는 Oracle 저장 프로시저와 함수(PL / SQL)를 가져와서 Snowflake Scripting 또는 JavaScript 에 내장된 Snowflake SQL 로 변환합니다. Oracle CREATE PROCEDURE
및 REPLACE PROCEDURE
구문은 Snowflake CREATE OR REPLACE PROCEDURE
구문으로 대체됩니다.
예¶
다음은 로깅에 사용되는 테이블에 삽입을 수행하는 간단한 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 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 Helpers are inserted here ...
이 명시된 라인에는 실제로 SnowConvert JavaScript Helpers 가 있습니다. 길이가 길 수 있으므로 이 첫 번째 예제에서는 제거했습니다.
¶
완료되었습니다! Snowflake SnowConvert 는 데이터 플랫폼 변경으로 인한 고통과 좌절을 덜어줍니다. 다음 페이지에서 Oracle용 SnowConvert 시작하기에 대해 자세히 알아보십시오.