SnowConvert AI - Oracle

Oracle용 SnowConvert AI란 무엇인가요?

SnowConvert AI는 Oracle SQL 및 PL/SQL를 이해하고 다음 변환을 수행하는 소프트웨어입니다.

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")
);
Copy

마이그레이션된 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"}}'
  ;
Copy

이 변환된 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 AI는 Oracle 저장 프로시저 및 함수(PL/SQL)를 가져와 Snowflake Scripting 또는 Snowflake SQL에 임베드된 JavaScript로 변환합니다. Oracle CREATE PROCEDUREREPLACE 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;
Copy

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;
$$;
Copy

대상 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;`);
$$;
Copy

이 변환된 SQL 에서는, Snowflake SQL 에 새로운 언어(JavaScript)가 내장되어 있음을 알 수 있습니다. 이 설명서에는 많은 주목할 만한 점이 있지만, 이 문서에는 이 유형의 변환을 이해하는 데 필요한 모든 필수 요소가 포함되어 있습니다.

// ... 필요한 SnowConvert AI 헬퍼가 여기에 삽입됩니다 ...라고 명시된 줄에는 실제로 SnowConvert AI JavaScript 헬퍼가 있습니다. 길이가 길 수 있으므로 이 첫 번째 예에서는 제거했습니다.

완료되었습니다! Snowflake SnowConvert AI는 데이터 플랫폼 변경 시 발생하는 어려움과 불편함을 덜어줍니다. 다음 페이지에서 Oracle용 SnowConvert AI를 시작하는 방법에 대해 자세히 알아보세요.