SnowConvert AI - Teradata - MLOAD¶
Teradata MLOAD 파일을 Snowflake SQL로 변환하기 위한 변환 참조
가져오기¶
설명¶
IMPORT 명령은 데이터 입력 소스를 지정합니다.
Import MLoad 에 대한 자세한 내용은 여기 에서 살펴볼 수 있습니다.
샘플 소스 패턴¶
BTEQ 내용 MLoad 도 EXECUTE IMMEDIATE 블록에서 재배치됩니다. 각 레이아웃 필드를 선택 항목에 추가하여 변환을 가져옵니다. dml 레이블의 삽입은 COPYINTO 로 변환되고 업서트(업데이트 및 삽입)는 MERGEINTO 로 변환됩니다.
1.Inset가 있는 DML 레이블¶
Teradata MLoad¶
-- Additional Params: -q SnowScript
.LOGTABLE my_table_log;
.LOGON my_teradata_system/username,password;
BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work
ERRORTABLES my_table_err;
.LAYOUT my_layout;
.FIELD col1 * VARCHAR(2);
.FIELD col2 * VARCHAR(5);
.dml label insert_into_my_table
IGNORE DUPLICATE INSERT ROWS ;
INSERT INTO my_table(col1, col2) VALUES (:col1, :col2);
.IMPORT INFILE C:\USER\user\my_tr_file_1.tr
FORMAT UNFORMAT
LAYOUT my_layout APPLY insert_into_my_table;
.END MLOAD;
.LOGOFF;
Snowflake SQL¶
EXECUTE IMMEDIATE
$$
DECLARE
STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
BEGIN
-- Additional Params: -q SnowScript
/*.LOGTABLE my_table_log;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGON my_teradata_system/username,password;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '7' COLUMN '1' OF THE SOURCE CODE STARTING AT 'ERRORTABLES'. EXPECTED 'STATEMENT' GRAMMAR. LAST MATCHING TOKEN WAS 'my_table_err' ON LINE '7' COLUMN '13'. CODE '81'. ***/
/*--ERRORTABLES my_table_err*/
/*.LAYOUT my_layout;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
/*.dml label insert_into_my_table
IGNORE DUPLICATE INSERT ROWS ;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
BEGIN
CREATE OR REPLACE STAGE &{stagename};
PUT file://C:\USER\user\my_tr_file_1.tr &{stagename};
COPY INTO my_table (
col1,
col2
)
FROM
(
SELECT DISTINCT
SUBSTRING($1, 1, 2) col1,
SUBSTRING($1, 3, 5) col2
FROM
@&{stagename}/my_tr_file_1.tr
);
END;
/*.END MLOAD;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGOFF;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
END
$$
2. DML label with upsert¶
Teradata MLoad¶
-- Additional Params: -q SnowScript
.LOGTABLE my_table_log;
.LOGON my_teradata_system/username,password;
BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work
ERRORTABLES my_table_err;
.LAYOUT my_layout;
.FIELD col1 * VARCHAR(2);
.FIELD col2 * VARCHAR(5);
.dml label upsert_into_my_table;
UPDATE my_table
SET
col1 = :col1,
col2 = :col2
WHERE col2 = :col2
INSERT INTO my_table (
col1, col2)
VALUES (:col1, :col2);
.IMPORT INFILE C:\USER\user\my_tr_file_1.tr
FORMAT UNFORMAT
LAYOUT my_layout APPLY upsert_into_my_table;
.END MLOAD;
.LOGOFF;
Snowflake SQL¶
EXECUTE IMMEDIATE
$$
DECLARE
STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
BEGIN
-- Additional Params: -q SnowScript
/*.LOGTABLE my_table_log;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGON my_teradata_system/username,password;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '7' COLUMN '1' OF THE SOURCE CODE STARTING AT 'ERRORTABLES'. EXPECTED 'STATEMENT' GRAMMAR. LAST MATCHING TOKEN WAS 'my_table_err' ON LINE '7' COLUMN '13'. CODE '81'. ***/
/*--ERRORTABLES my_table_err*/
/*.LAYOUT my_layout;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
/*.dml label upsert_into_my_table;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
BEGIN
CREATE OR REPLACE STAGE &{stagename};
PUT file://C:\USER\user\my_tr_file_1.tr &{stagename};
MERGE INTO my_table merge_table
USING (
SELECT
SUBSTRING($1, 1, 2) col1,
SUBSTRING($1, 3, 5) col2
FROM
@&{stagename}/my_tr_file_1.tr
) load_temp ON merge_table.col2 = load_temp.col2
WHEN MATCHED THEN
UPDATE SET
merge_table.col1 = load_temp.col1,
merge_table.col2 = load_temp.col2
WHEN NOT MATCHED THEN
INSERT (col1, col2)
VALUES (load_temp.col1, load_temp.col2);
END;
/*.END MLOAD;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGOFF;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
END
$$
3. Layout or DML label not found¶
Teradata MLoad¶
-- Additional Params: -q SnowScript
.LOGTABLE my_table_log;
.LOGON my_teradata_system/username,password;
BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work
ERRORTABLES my_table_err;
.LAYOUT my_layout;
.FIELD col1 * VARCHAR(2);
.FIELD col2 * VARCHAR(5);
.dml label insert_into_my_table
IGNORE DUPLICATE INSERT ROWS ;
INSERT INTO my_table(col1, col2)VALUES (:col1, :col2);
.IMPORT INFILE C:\USER\user\my_tr_file_1.tr
FORMAT UNFORMAT
LAYOUT not_layout APPLY insert_into_my_table;
.IMPORT INFILE C:\USER\user\my_tr_file_1.tr
FORMAT UNFORMAT
LAYOUT my_layout APPLY insert_not_my_table;
.END MLOAD;
.LOGOFF;pl
Snowflake SQL¶
EXECUTE IMMEDIATE
$$
DECLARE
STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
BEGIN
-- Additional Params: -q SnowScript
/*.LOGTABLE my_table_log;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGON my_teradata_system/username,password;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '7' COLUMN '1' OF THE SOURCE CODE STARTING AT 'ERRORTABLES'. EXPECTED 'STATEMENT' GRAMMAR. LAST MATCHING TOKEN WAS 'my_table_err' ON LINE '7' COLUMN '13'. CODE '81'. ***/
/*--ERRORTABLES my_table_err*/
/*.LAYOUT my_layout;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
/*.dml label insert_into_my_table
IGNORE DUPLICATE INSERT ROWS ;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
-- .IMPORT INFILE C:\USER\user\my_tr_file_1.tr FORMAT UNFORMAT LAYOUT not_layout APPLY insert_into_my_table
;
BEGIN
CREATE OR REPLACE STAGE &{stagename};
PUT file://C:\USER\user\my_tr_file_1.tr &{stagename};
END;
/*.END MLOAD;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGOFF;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '26' COLUMN '9' OF THE SOURCE CODE STARTING AT 'pl'. EXPECTED 'STATEMENT' GRAMMAR. LAST MATCHING TOKEN WAS 'pl' ON LINE '26' COLUMN '9'. CODE '81'. ***/
/*--pl*/
END
$$
4. Conditions not found in update statement¶
Teradata MLoad¶
-- Additional Params: -q SnowScript
.LOGTABLE my_table_log;
.LOGON my_teradata_system/username,password;
BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work
ERRORTABLES my_table_err;
.LAYOUT my_layout;
.FIELD col1 * VARCHAR(2);
.FIELD col2 * VARCHAR(5);
.dml label upsert_into_my_table;
UPDATE my_table
SET
col1 = :col1,
col2 = :col2
INSERT INTO my_table (
col1, col2)
VALUES (:col1, :col2);
.IMPORT INFILE C:\USER\user\my_tr_file_1.tr
FORMAT UNFORMAT
LAYOUT my_layout APPLY upsert_into_my_table;
.END MLOAD;
.LOGOFF;
Snowflake SQL¶
EXECUTE IMMEDIATE
$$
DECLARE
STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
BEGIN
-- Additional Params: -q SnowScript
/*.LOGTABLE my_table_log;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGON my_teradata_system/username,password;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*BEGIN IMPORT MLOAD TABLES my_table
WORKTABLES my_table_work*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '7' COLUMN '1' OF THE SOURCE CODE STARTING AT 'ERRORTABLES'. EXPECTED 'STATEMENT' GRAMMAR. LAST MATCHING TOKEN WAS 'my_table_err' ON LINE '7' COLUMN '13'. CODE '81'. ***/
/*--ERRORTABLES my_table_err*/
/*.LAYOUT my_layout;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
/*.dml label upsert_into_my_table;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. INFORMATION MAY BE USED IN A TRANSFORMED IMPORT CLAUSE **
-- .IMPORT INFILE C:\USER\user\my_tr_file_1.tr FORMAT UNFORMAT LAYOUT my_layout APPLY upsert_into_my_table
;
/*.END MLOAD;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
/*.LOGOFF;*/
--** SSC-FDM-0027 - REMOVED NEXT STATEMENT, NOT APPLICABLE IN SNOWFLAKE. **
END
$$
Known Issues¶
아직 지원되지 않는 가져오기 절의 일부 문이 있습니다.
AXSMOD 문
INMODE 문
FORMAT (FORMAT UNFORMAT 만 지원됨)
WHERE APPLY 레이블의 상태