BTEQ Utility Command¶
GaussDB(DWS) provides gsql meta-commands that can be used to replace common BTEQ tool commands. The mostly used replacements are as follows:
.QUIT | .EXIT | .RETURN¶
The meta-command \q [value] can be used to exit the gsql program, and value specifies the exit code. The .QUIT, .EXIT, and .RETURN commands can replace each other with the \q command.
Input | Output |
---|---|
.QUIT 0 | \q 0 |
.EXIT | \q |
.RETURN | \q |
.LABEL and .GOTO¶
The Teradata command .LABEL is used to create tags and is usually used together with .GOTO. .GOTO skips all intermediate BTEQ commands and SQL statements, instructs you to reach the specified label position, and performs corresponding restoration processing.
gsql meta-command \goto LABEL... and \label LABEL can be replaced with each other with no constraints.
Input | Output |
---|---|
.IF CHECK_PK='' THEN .GOTO NOCHECK ${CHECK_PK}; .LABEL NOCHECK .QUIT 0 | \if ${CHECK_PK} == '' \goto NOCHECK \endif ${CHECK_PK} \label NOCHECK \q 0 |
.RUN FILE¶
Executing the SQL request of a specified file can be implemented by the gsql meta-command \i.
Input | Output |
---|---|
.RUN FILE=sampfile | \i 'sampfile' |
.EXPORT FILE¶
Exporting the SQL statement execution result to a specified file can be implemented by the gsql meta-command \o.
Input | Output |
---|---|
.EXPORT REPORT FILE=resultfile | \o 'resultfile' |
..SET ..END¶
To set a variable to specified value, both a single-line command or a multi-line command ended with ..END can be used. You can run the SELECT command to query a specified variable name or run the \set command to convert the variable name.
Input | Output |
---|---|
.SET SEPARATOR ' | ' | \set SEPARATOR '|' |
..SET NAME 'Jack' ..END | SELECT 'Jack' AS "NAME"; |
.IF¶
.IF is one of the important process control commands used to execute parts of an input script. It can be a single-branch command, which is used in pairs with the THEN clause. It can also be a multi-branch command. The multi-branch IF structure allows multiple nested layers, but each layer must start with the IF command and end with the ENDIF command.
The flow control meta-commands \if... \else ... \endif can be used to replace this BTEQ command.
Input | Output |
---|---|
.IF ERRORCODE <> 0 THEN .QUIT 12; | \if ${ERROR} != 'false' \q 12 \endif |
..FOR¶
In the loop control command, when the loop condition is met, the script of the loop body can be executed continuously until .QUIT exits the loop. GaussDB(DWS) provides \for... \loop ... \exit-for ... \end-for structure command implements the loop logic.
Input | Output |
---|---|
..IF ACTIVITYCOUNT > 0 THEN ..FOR SEL SqlStr AS V_SqlStr FROM ${ ETL_DATA}.TB_DWDATA_UPDATE WHERE JobName = '${JOB_NAME}' AND TXDATE = ${ TX_DATE} - 19000000 ORDER BY ExcuteSeq ASC; ..DO ${V_SqlStr} .IF ERRORCODE<>0 THEN .QUIT 12 ..END-FOR ..END-IF | \if ${ERROR} != 'false' \q 12 \endif \if ${ACTIVITYCOUNT} != 0 \for SELECT SqlStr AS V_SqlStr FROM ${ETL_DATA}.TB_DWDATA_UPDATE WHERE JobName = '${JOB_NAME}' AND TXDATE = to_date( ${TX_DATE} ,'yyyymmdd' ) ORDER BY ExcuteSeq ASC \loop ${V_SqlStr} ; \if ${ERROR} != 'false' \q 12 \endif \end-for \endif |