BTEQ Utility Command
The BTEQ utility commands are as follows:
LOGOFF QUIT
LOGOFF ends the current RDBMS sessions without exiting BTEQ.
QUIT command ends the current Teradata database sessions and exits BTEQ.
Input
SELECT 'StartDTTM' as a ,CURRENT_TIMESTAMP (FORMAT 'HH:MI:SSBMMMBDD,BYYYY') ; .LOGOFF; .QUIT;
Output
SELECT 'StartDTTM' as a ,CURRENT_TIMESTAMP (FORMAT 'HH:MI:SSBMMMBDD,BYYYY') ; .LOGOFF; .QUIT;
Gauss does not support, so it is required to comment.
.IF ERRORCODE and .QUIT
BTEQ statements specified with .IF and .QUIT.
Input
COLLECT STATISTICS USING SAMPLE 5.00 PERCENT COLUMN ( CDR_TYPE_KEY ) , COLUMN ( PARTITION ) , COLUMN ( SRC ) , COLUMN ( PARTITION,SBSCRPN_KEY ) ON DT_SDM.FCT_OTGO_NTWK_ACTVY_DAILY ;
Output
SET default_statistics_target = 5.00 ; ANALYZE DT_SDM.FCT_OTGO_NTWK_ACTVY_DAILY (CDR_TYPE_KEY) ; ANALYZE DT_SDM.FCT_OTGO_NTWK_ACTVY_DAILY (PARTITION) ; ANALYZE DT_SDM.FCT_OTGO_NTWK_ACTVY_DAILY (SRC) ; ANALYZE DT_SDM.FCT_OTGO_NTWK_ACTVY_DAILY (PARTITION,SBSCRPN_KEY) ; RESET default_statistics_target ;
.IF
Input:
.IF END_MONTH_FLAG <> 'Y' THEN .GOTO LABEL_1;
Output:
IF END_MONTH_FLAG <> 'Y' THEN GOTO LABEL_1 ; END IF ;
.QUIT
Input:
.IF ERRORCODE <> 0 THEN .QUIT 12;
Output:
IF ERRORCODE <> 0 THEN RAISE EXCEPTION '12' ; END IF;
.IF & .QUIT
.IF and .QUIT should be moved inside the block.
Oracle Syntax |
Syntax After Migration |
---|---|
INSERT INTO EMP SELECT * FROM EMP; .IF ERRORCODE <> 0 THEN .QUIT 12; |
DECLARE lv_mig_errorcode NUMBER ( 4 ) ; BEGIN BEGIN INSERT INTO EMP SELECT * FROM EMP; lv_mig_errorcode := 0 ; EXCEPTION WHEN OTHERS THEN lv_mig_errorcode := - 1 ; END ; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12' ; END IF ; END ; / |
.RETURN
Input:
.if ERRORCODE = 0 then .RETURN;
Output:
IF ERRORCODE = 0 THEN RETURN; END IF;
.GOTO
Input:
.IF END_MONTH_FLAG <> 'Y' THEN .GOTO LABEL_1;
Output:
IF END_MONTH_FLAG <> 'Y' THEN GOTO LABEL_1; END IF ;
Label
Input:
.LABEL LABEL_1
Output:
<<LABEL_1>>
ERRORCODE 3807
Input:
SELECT end_mon AS END_MONTH_FLAG FROM tab2 ; .IF END_MONTH_FLAG <> 'Y' THEN .GOTO LABEL_1; .IF ERRORCODE = 3807 THEN .QUIT 8888;
Output
DECLARE lv_mig_errorcode NUMBER (4); lv_mig_END_MONTH_FLAG TEXT; BEGIN BEGIN SELECT end_mon INTO lv_mig_END_MONTH_FLAG FROM tab2 ; lv_mig_errorcode := 0 ; EXCEPTION WHEN UNDEFINED_TABLE THEN lv_mig_errorcode := 3807 ; WHEN OTHERS THEN lv_mig_errorcode := - 1 ; END ; IF lv_mig_END_MONTH_FLAG <> 'Y' THEN GOTO LABEL_1 ; END IF ; IF lv_mig_errorcode = 3807 THEN RAISE EXCEPTION '8888' ; END IF ; END; /
BT with BTEQ commands
Input
BT; delete from ${BRTL_DCOR}.BRTL_CS_CUST_CID_UID_REL where DW_Job_Seq = ${v_Group_No}; .if ERRORCODE <> 0 then .quit 12; insert into ${BRTL_DCOR}.BRTL_CS_CUST_CID_UID_REL ( Cust_Id ,Cust_UID ,DW_Upd_Dt ,DW_Upd_Tm ,DW_Job_Seq ,DW_Etl_Dt ) select a.Cust_Id ,a.Cust_UID ,current_date as Dw_Upd_Dt ,current_time(0) as DW_Upd_Tm ,cast(${v_Group_No} as byteint) as DW_Job_Seq ,cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd') as DW_Etl_Dt from ${BRTL_VCOR}.BRTL_CS_CUST_CID_UID_REL_S a where a.DW_Snsh_Dt = cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd'); .if ERRORCODE <> 0 then .quit 12;
Output
BEGIN -- BEGIN delete from ${BRTL_DCOR}.BRTL_CS_CUST_CID_UID_REL where DW_Job_Seq = ${v_Group_No}; lv_mig_errorcode = 0; EXCEPTION WHEN OTHERS THEN lv_mig_errorcode = -1; END; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12'; END IF;
ET with BTEQ Commands
Input
ET; BEGIN BEGIN delete from ${BRTL_DCOR}.BRTL_CS_CUST_CID_UID_REL where DW_Job_Seq = ${v_Group_No}; lv_mig_errorcode = 0; EXCEPTION WHEN OTHERS THEN lv_mig_errorcode = -1; END; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12'; END IF; BEGIN insert into ${BRTL_DCOR}.BRTL_CS_CUST_CID_UID_REL ( Cust_Id ,Cust_UID ,DW_Upd_Dt ,DW_Upd_Tm ,DW_Job_Seq ,DW_Etl_Dt ) select a.Cust_Id ,a.Cust_UID ,current_date as Dw_Upd_Dt ,current_time(0) as DW_Upd_Tm ,cast(${v_Group_No} as byteint) as DW_Job_Seq ,cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd') as DW_Etl_Dt from ${BRTL_VCOR}.BRTL_CS_CUST_CID_UID_REL_S a where a.DW_Snsh_Dt = cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd'); EXCEPTION WHEN OTHERS THEN lv_mig_errorcode = -1; END; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12'; END IF; END;
Output
-- BEGIN insert into ${BRTL_DCOR}.BRTL_CS_CUST_CID_UID_REL ( Cust_Id ,Cust_UID ,DW_Upd_Dt ,DW_Upd_Tm ,DW_Job_Seq ,DW_Etl_Dt ) select a.Cust_Id ,a.Cust_UID ,current_date as Dw_Upd_Dt ,current_time(0) as DW_Upd_Tm ,cast(${v_Group_No} as byteint) as DW_Job_Seq ,cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd') as DW_Etl_Dt from ${BRTL_VCOR}.BRTL_CS_CUST_CID_UID_REL_S a where a.DW_Snsh_Dt = cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd'); EXCEPTION WHEN OTHERS THEN lv_mig_errorcode = -1; END; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12'; END IF; END;
.Export FILE
.EXPORT FILE should be changed to COPY and teradata utilities is set to false.
Oracle Syntax |
Syntax After Migration |
---|---|
.export file = $FILENAME; select empno, ename from emp where deptno = 1; |
COPY (select empno, ename from emp where deptno = 1) TO '$FILENAME' CSV HEADER DELIMITER E'\t'; |
.EXPORT FILE should be changed to $q$COPY and moved inside the block when teradataUtilities is set to true.
Oracle Syntax |
Syntax After Migration |
---|---|
print BTEQ <<ENDOFINPUT; DATABASE HPBUS; .export file = $FILENAME; select empno, ename from emp where deptno = 1; .IF ERRORCODE <> 0 THEN .QUIT 12; .LOGOFF; .QUIT 0; ENDOFINPUT |
DECLARE lv_mig_obj_exists_check NUMBER(1); lv_mig_errorcode NUMBER(4); BEGIN SET SESSION CURRENT_SCHEMA TO public ; BEGIN SELECT COUNT(*) INTO lv_mig_obj_exists_check FROM (select empno, ename from emp where deptno = 1); lv_mig_errorcode := 0; EXCEPTION WHEN OTHERS THEN lv_mig_errorcode := -1; END ; EXECUTE $q$COPY (select empno, ename from emp where deptno = 1) TO '$FILENAME' CSV HEADER DELIMITER E'\t'$q$; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12'; END IF ; RAISE EXCEPTION '-99'; RETURN ; END ; / |
SQL_Lang & BTEQ
Multiple tag names should be handled for SQL_Lang.
Oracle Syntax |
Syntax After Migration |
---|---|
#!/usr/bin/perl ###################################################################### # BTEQ script in Perl # Date Time : 2013-10-15 # Table : TB_NET_LTE_GPRS_CDR (4G GPRS»°µ¥) # Script Name : XXX00_TB_NET_LTE_GPRS_CDR # Source Table : TB_04024-GPRS # Load strategy: S4 use strict; # Declare using Perl strict syntax my $HOME = $ENV{"AUTO_HOME"}; unshift(@INC, "$HOME/bin"); require etl_pub; # ------------ Variable Section ------------ # DATABASE NAMES my $TEMPDB = $ETL::TEMPDB; my $SDATADB = $ETL::SDATADB; my $PDATADB = $ETL::PDATADB; my $PARADB = $ETL::PARADB; my $PDDL = $ETL::PDDL; my $PCODE = $ETL::PCODE; if ( $#ARGV < 0 ) { exit(1); } my $CONTROL_FILE = $ARGV[0]; my $TX_DATE = substr(${CONTROL_FILE},length(${CONTROL_FILE})-12, 8); open(STDERR, ">&STDOUT"); my $TRG_COL_LIST =<<TRGCOLLIST; MSISDN ,dat_rcd_dt ,vst_rgn_cd TRGCOLLIST my $MAP_COL_LIST =<<MAPCOLLIST; TB_04024.msisdn ,CAST('$TX_DATE' AS DATE FORMAT 'YYYYMMDD') ,TB_04024.vst_rgn_cd MAPCOLLIST my $FILTER = "CMCC_Prov_Prvd_Id=$PCODE"; my $table_today ="${TEMPDB}.TB_04024_${PCODE}"; my $table_target = "Z" . substr($PCODE,1,2) . "NET_LTE_GPRS_CDR"; my $UNIT_FLAG; sub BTEQ_S4 { my ($dbh) = @_; my $BTEQ_CMD_S4 = <<ENDOFINPUT; INSERT INTO ${PDATADB}.$table_target ( $TRG_COL_LIST) SELECT $MAP_COL_LIST FROM $SDATADB.TB_${PCODE}_04024_${UNIT_FLAG}_${TX_DATE} TB_04024; .IF ERRORCODE <> 0 THEN .QUIT 12; ENDOFINPUT return $BTEQ_CMD_S4; } my $unit_num = "04024"; sub BTEQ_Z1 { my $BTEQ_CMD_Z1 = <<ENDOFINPUT; INSERT INTO ${PDATADB}.$table_target ( $TRG_COL_LIST) SELECT $MAP_COL_LIST FROM $SDATADB.TB_${PCODE}_${unit_num}_${UNIT_FLAG}_${TX_DATE} tb_${unit_num}; .IF ERRORCODE <> 0 THEN .QUIT 12; ENDOFINPUT return $BTEQ_CMD_Z1; } sub main() { my $dbh=ETL::DBconnect(); # SDATA $UNIT_FLAG = ETL::get_UNIT_FLAG($dbh, "TB_04024", $PCODE, $TX_DATE); my $BTEQCMD = ""; if ( $UNIT_FLAG eq " " ) { print "Ô!\n"; ETL::disconnectETL($dbh); return 1; } elsif ($UNIT_FLAG eq "S") { $BTEQCMD = BTEQ_S4($dbh); } elsif ($UNIT_FLAG eq "Z") { $BTEQCMD = BTEQ_Z1($dbh); } else { print "\n"; return 1; } ETL::disconnectETL($dbh); return ETL::ExecuteBTEQ($BTEQCMD, $TX_DATE); } my $ret= main(); exit($ret); |
#!/usr/bin/perl ###################################################################### # BTEQ script in Perl # Date Time : 2013-10-15 # Table : TB_NET_LTE_GPRS_CDR (4G GPRS) # Script Name : XXX00_TB_NET_LTE_GPRS_CDR # Source Table : TB_04024-GPRS # Load strategy: S4 use strict; # Declare using Perl strict syntax my $HOME = $ENV{"AUTO_HOME"}; unshift(@INC, "$HOME/bin"); require etl_pub; # ------------ Variable Section ------------ # DATABASE NAMES my $TEMPDB = $ETL::TEMPDB; my $SDATADB = $ETL::SDATADB; my $PDATADB = $ETL::PDATADB; my $PARADB = $ETL::PARADB; my $PDDL = $ETL::PDDL; my $PCODE = $ETL::PCODE; if ( $#ARGV < 0 ) { exit(1); } my $CONTROL_FILE = $ARGV[0]; my $TX_DATE = substr(${CONTROL_FILE},length(${CONTROL_FILE})-12, 8); open(STDERR, ">&STDOUT"); my $TRG_COL_LIST=<<TRGCOLLIST ; MSISDN ,dat_rcd_dt ,vst_rgn_cd TRGCOLLIST my $MAP_COL_LIST=<<MAPCOLLIST ; TB_04024.msisdn ,CAST( '$TX_DATE' AS DATE ) ,TB_04024.vst_rgn_cd MAPCOLLIST my $FILTER = "CMCC_Prov_Prvd_Id=$PCODE"; my $table_today ="${TEMPDB}.TB_04024_${PCODE}"; my $table_target = "Z" . substr($PCODE,1,2) . "NET_LTE_GPRS_CDR"; my $UNIT_FLAG; sub BTEQ_S4 { my ($dbh) = @_; my $BTEQ_CMD_S4=<<ENDOFINPUT ; DECLARE lv_mig_obj_exists_check NUMBER ( 1 ) ; lv_mig_errorcode NUMBER ( 4 ) ; BEGIN BEGIN INSERT INTO ${PDATADB}.$table_target ($TRG_COL_LIST) SELECT $MAP_COL_LIST FROM $SDATADB.TB_${PCODE}_04024_${UNIT_FLAG}_${TX_DATE} TB_04024 ; lv_mig_errorcode := 0 ; EXCEPTION WHEN OTHERS THEN lv_mig_errorcode := - 1 ; END ; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12' ; END IF ; END ; / ENDOFINPUT return $BTEQ_CMD_S4; } my $unit_num = "04024"; sub BTEQ_Z1 { my $BTEQ_CMD_Z1=<<ENDOFINPUT ; DECLARE lv_mig_obj_exists_check NUMBER ( 1 ) ; lv_mig_errorcode NUMBER ( 4 ) ; BEGIN INSERT INTO ${PDATADB}.$table_target ($TRG_COL_LIST) SELECT $MAP_COL_LIST FROM $SDATADB.TB_${PCODE}_${unit_num}_${UNIT_FLAG}_${TX_DATE} tb_${unit_num} ; lv_mig_errorcode := 0 ; EXCEPTION WHEN OTHERS THEN lv_mig_errorcode := - 1 ; END ; IF lv_mig_errorcode <> 0 THEN RAISE EXCEPTION '12' ; END IF ; END ; / ENDOFINPUT return $BTEQ_CMD_Z1; } sub main() { my $dbh=ETL::DBconnect(); # SDATA $UNIT_FLAG = ETL::get_UNIT_FLAG($dbh, "TB_04024", $PCODE, $TX_DATE); my $BTEQCMD = ""; if ( $UNIT_FLAG eq " " ) { print "!\n"; ETL::disconnectETL($dbh); return 1; } elsif ($UNIT_FLAG eq "S") { $BTEQCMD = BTEQ_S4($dbh); } elsif ($UNIT_FLAG eq "Z") { $BTEQCMD = BTEQ_Z1($dbh); } else { print "¸\n"; return 1; } ETL::disconnectETL($dbh); return ETL::ExecuteBTEQ($BTEQCMD, $TX_DATE); } my $ret= main(); exit($ret); |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot