SnowConvert AI – Teradata – BTEQ¶
Übersetzungsreferenzen zur Konvertierung von Teradata-BTEQ-Dateien in Snowflake SQL
Beschreibung¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Basic Teradata Query (BTEQ) ist ein allgemeines, befehlsbasiertes Programm, das es Benutzern auf einer Workstation ermöglicht, mit einem oder mehreren Teradata-Datenbanksystemen zu kommunizieren und Berichte für die Druck- und Bildschirmausgabe zu formatieren.
For more information, see the Teradata BTEQ Reference.
Beispielhafte Quellcode-Muster¶
1. Basic BTEQ Example¶
The BTEQ content is relocated within an EXECUTE IMMEDIATE block to transfer the BTEQ script functionality to Snowflake SQL executable code.
Alle DML- und DDL-Anweisungen innerhalb von BTEQ-Skripten werden von SnowConvert AI unterstützt und erfolgreich in Snowflake übersetzt SQL übersetzt. Die Befehle, die noch nicht oder gar nicht unterstützt werden, werden mit einer Warnmeldung markiert und auskommentiert.
Teradata BTEQ¶
Snowflake SQL¶
2. Bash Variable Placeholders Example¶
SnowConvert AI unterstützt die Migration von BTEQ-Code mit Platzhaltern für Bash-Variablen, die für Shell-Skripte verwendet werden. Diese Platzhalter werden in die entsprechenden SnowSQL-Äquivalente migriert und SSC-FDM-TD0003 wird dem Code hinzugefügt. Wenn Sie Code mit diesen Platzhaltern migrieren, beachten Sie Folgendes:
SnowConvert AI unterstützt nicht die Migration von Shell-Skripten. Um den BTEQ-Code zu migrieren, isolieren Sie ihn in einer BTEQ-Datei und stellen Sie ihn als Eingabe für das Tool bereit.
SnowSQL mit aktivierter Variablenersetzung ist erforderlich, um den migrierten Code auszuführen. Weitere Informationen zur Verwendung von SnowSQL finden Sie unter SSC-FDM-TD0003 und in der offiziellen Dokumentation zu SnowSQ.
Teradata BTEQ¶
Snowflake SQL¶
3. .IF, .GOTO, and .LABEL (Snowflake Scripting)¶
When the BTEQ script target is Snowflake Scripting (SnowScript), SnowConvert AI translates .IF, .GOTO, and .LABEL by modeling jumps as nested procedure calls and early returns inside a single EXECUTE IMMEDIATE $$ … $$ block. Snowflake does not provide BTEQ-style goto/label semantics.
BTEQ construct |
Snowflake Scripting approach |
|---|---|
Script body with labels |
Wrapped in |
|
Section |
|
|
|
|
|
|
Error/status tracking |
|
Bemerkung
To produce output in this form, set the Teradata/BTEQ script output to Snowflake Scripting (for example -- Additional Params: -q SnowScript in the samples below). Option names vary by interface; see the SnowConvert AI user guide for your product version.
The following example shows .IF ERRORCODE with .GOTO and .LABEL. Teradata BTEQ often branches on ERRORCODE after DDL and jumps to a labeled cleanup or next step.
Teradata BTEQ¶
Snowflake SQL¶
After each statement that can set SQL state, the generated IF checks STATUS_OBJECT['SQLCODE']. On error, the script calls the target label procedure and returns from the current procedure so later statements in that section do not run. On success, it calls the next section’s procedure to continue the original linear flow.
The next example shows .IF ActivityCount = 0 THEN .GOTO …, expressed in Snowflake Scripting using the last query id and RESULT_SCAN.
Teradata BTEQ¶
Snowflake SQL¶
If activity count is zero, the generated script jumps to the label section with CALL Continue_No_Rejects_00() and RETURN 'PROCESS FINISHED', skipping DROP TABLE DROPTEDTABLE1. Otherwise it runs DROP TABLE, then calls the label procedure to run SELECT A FROM AUDITORIA.
Bekannte Probleme¶
Es gibt möglicherweise BTEQ-Befehle, die keine Entsprechung in Snowflake SQL haben
Da BTEQ ein befehlsbasiertes Programm ist, kann es sein, dass einige Befehle in Ihrem Eingabecode keine hundertprozentige funktionale Entsprechung in Snowflake SQL haben. Diese besonderen Fälle werden identifiziert, mit Warnungen im Ausgabecode gekennzeichnet und auf den weiteren Seiten dokumentiert.