SnowConvert: Teradata¶
SnowConvert 란 무엇입니까?¶
SnowConvert 는 Teradata SQL, BTEQ 및 기타 Teradata 관련 스크립트(예: Fastload, Multiload, TPump, TPT 파일)를 이해하고 이 소스 코드를 기능적으로 동등한 Snowflake 코드로 변환하는 소프트웨어입니다.
변환 유형¶
구체적으로, Teradata용 SnowConvert 는 다음과 같은 변환 성능을 수행합니다.
Teradata SQL 을 Snowflake SQL 로¶
SnowConvert 는 Teradata 소스 코드를 이해하고 소스 코드의 데이터 정의 언어(DDL), 데이터 조작 언어(DML) 및 함수를 대상인 Snowflake의 해당 SQL 로 변환합니다. SnowConvert 는 .sql, .dml, ddl 의 3가지 확장자 중 하나로 소스 코드를 마이그레이션할 수 있습니다.
Teradata 저장 프로시저 JavaScript 에 포함된 Snowflake SQL¶
SnowConvert 는 Teradata 저장 프로시저(일반적으로 SQL 로 작성됨)를 가져와서 JavaScript 에 내장된 Snowflake SQL 로 변환합니다. Teradata의 CREATE PROCEDURE 및 REPLACE PROCEDURE 언어는 Snowflake의 CREATE OR REPLACE PROCEDURE 언어로 대체됩니다. JavaScript 를 스크립트 언어로 호출하고 내부 문을 모두 JavaScript 로 변환합니다.
Teradata BTEQ, Fastload, Multiload 및 TPT 를 Python으로¶
기본 Teradata 쿼리(BTEQ)는 Teradata의 독점 스크립트 언어입니다. 모든 BTEQ 스크립트 파일은 Python 스크립트로 변환됩니다. 변환된 스크립트에서 헬퍼 클래스가 호출되어 소스와 대상 간의 기능적 동등성을 생성합니다. Python 도우미에 대한 자세한 내용은 변환 참조 페이지를 참조하십시오. BTEQ 는 Snowflake 환경 외부에서 배치 실행할 수 있습니다. Python 스크립트를 Snowflake에 직접 연결하는 방법에 대해 자세히 알아보십시오.
BTEQ 파일은 Teradata가 생성한 다른 여러 독점 데이터 타입의 기반이기도 합니다.
Fastload
Multiload
TPUMP
이러한 각 파일 형식은 BTEQ 의 확장자입니다. SnowConvert 는 이러한 각 파일 유형을 Python으로 변환합니다.
이러한 각 변환은 기능적으로 가장 동등한 출력을 제공하도록 최적화되어 Snowflake에서 바로 사용할 수 있습니다. SnowConvert 가 제공할 수 있는 변환의 종류에 대한 자세한 내용은 전체 SQL 참조 가이드에서 도구에 대해 자세히 알아볼 수 있습니다.
SnowConvert 용어¶
이러한 코드 변환의 마법에 빠져들기 전에 몇 가지 용어/정의에 대한 설명서를 통해 그 의미를 이해할 수 있도록 몇 가지 용어를 소개합니다.
SQL (구조화된 쿼리 언어): 대부분의 최신 데이터베이스 아키텍처에서 데이터를 저장, 조작, 검색하기 위한 표준 언어입니다.
BTEQ (배치 Teradata 쿼리): BTEQ 는 Teradata의 첫 번째 유틸리티 및 쿼리 도구입니다.
TPT (Teradata Parallel Transporter): TPT 는 Teradata 데이터베이스에서 데이터를 로딩하고 내보내는 것과 관련된 모든 활동을 위한 원스톱 도구를 생성하는 것을 목표로 하는 차세대 유틸리티 도구입니다.
SnowConvert: Teradata 파일을 자동으로 안전하게 Snowflake 클라우드 데이터 플랫폼으로 변환하는 소프트웨어입니다.
변환 규칙 또는 변환 규칙: SnowConvert 가 소스 코드의 일부에서 예상 대상 코드로 변환할 수 있도록 허용하는 규칙입니다.
_구문 분석:_구문 분석 또는 구문 분석은 SnowConvert 에서 소스 코드를 이해하고 변환 규칙을 처리하기 위한 내부 데이터 구조를 구축하기 위해 수행하는 초기 프로세스입니다.
다음 몇 페이지에서 SnowConvert for Teradata가 수행할 수 있는 변환의 종류에 대해 자세히 알아보겠습니다. 시작할 준비가 되었다면 이 설명서의 시작하기 페이지를 참조하십시오. SnowConvert 에 대한 자세한 내용은 SnowConvert for Teradata 정보 페이지에서 확인할 수 있습니다.
변환 샘플¶
Teradata SQL 문
-- CREATE TABLE DDL
CREATE SET TABLE TABLE1,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
COL1 VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC,
Col2 BYTEINT CHECK ( CurrentFlag IN (0 ,1 ) ) NOT NULL,
COL3 DATE FORMAT 'yyyy-mm-dd',
COL4 BLOB(2097088000),
COL5 BYTEINT,
COL7 INTEGER NOT NULL COMPRESS (1 ,2 ,3 ,4),
COL8 INTERVAL HOUR(2) TO MINUTE
);
-- REPLACE VIEW DDL
REPLACE VIEW VIEW1 AS
SELECT * FROM TABLE1
UNION ALL
SELECT MAX(COL1) FROM TABLE1;
변환된 Snowflake SQL 코드:
-- CREATE TABLE DDL
--** SSC-FDM-TD0024 - SET TABLE FUNCTIONALITY NOT SUPPORTED. TABLE MIGHT HAVE DUPLICATE ROWS **
CREATE OR REPLACE TABLE TABLE1
(
COL1 VARCHAR(15) COLLATE 'en-cs',
Col2 BYTEINT
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!!
CHECK ( CurrentFlag IN (0 ,1 ) ) NOT NULL,
COL3 DATE,
COL4 BINARY /*** SSC-FDM-TD0001 - COLUMN CONVERTED FROM BLOB DATA TYPE ***/,
COL5 BYTEINT,
COL7 INTEGER NOT NULL,
COL8 VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL HOUR(2) TO MINUTE DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;
-- REPLACE VIEW DDL
CREATE OR REPLACE VIEW VIEW1
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
AS
SELECT
* FROM
TABLE1
UNION ALL
SELECT
MAX(COL1) FROM
TABLE1;
이 변환된 SQL 에서는 다음과 같은 많은 것들이 변환되고 있음을 알 수 있습니다.
사용자가 스키마를 지정하지 않은 경우 모든 테이블 및 뷰 이름에 기본적으로
PUBLIC
스키마를 추가합니다(스키마 지정 방법 참조).CREATE SET TABLE
에서CREATE TABLE
로REPLACE VIEW
에서CREATE OR REPLACE VIEW
로데이터 타입:
BLOB
에서BINARY
로,INTERVAL
에서VARCHAR
로데이터 타입 특성:
NOTCASESPECIFIC
에서COLLATE
로NO BEFORE JOURNAL
,NO AFTER JOURNAL
,CHECKSUM
,COMPRESS
,DEFAULT MERGEBLOCKRATIO
같은 Snowflake의 아키텍처로 인해 필요하지 않은 Teradata SQL 의 일부를 제거합니다 .