SnowConvert AI - Teradata - BTEQ¶
Références de traduction pour convertir des fichiers BTEQ Teradata en Snowflake SQL
Description¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Basic Teradata Query (BTEQ) est un programme général basé sur des commandes qui permet aux utilisateurs d’une station de travail de communiquer avec un ou plusieurs systèmes de bases de données Teradata et de formater des rapports pour l’impression et la sortie écran.
Pour plus d’informations sur BTEQ, cliquez ici.
Modèles d’échantillons de sources¶
1. Basic BTEQ Example¶
Le contenu BTEQ est déplacé dans un bloc EXECUTE IMMEDIATE pour transférer la fonctionnalité du script BTEQ vers le code exécutable de Snowflake SQL.
Toutes les instructions DML et DDL dans les scripts BTEQ sont pris en charge par SnowConvert AI et traduits correctement en Snowflake SQL. Les commandes qui ne sont pas encore prises en charge, ou qui ne sont pas du tout prises en charge, sont marquées par un message d’avertissement et commentées.
Teradata BTEQ¶
-- Additional Params: -q SnowScript
.LOGON 0/dbc,dbc;
DATABASE tduser;
CREATE TABLE employee_bkup (
EmployeeNo INTEGER,
FirstName CHAR(30),
LastName CHAR(30),
DepartmentNo SMALLINT,
NetPay INTEGER
)
Unique Primary Index(EmployeeNo);
DROP TABLE employee_bkup;
.IF ERRORCODE <> 0 THEN .EXIT ERRORCODE;
.LOGOFF;
Snowflake SQL¶
EXECUTE IMMEDIATE
$$
DECLARE
STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
BEGIN
-- Additional Params: -q SnowScript
--.LOGON 0/dbc,dbc
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'BTLogOn' NODE ***/!!!
null;
BEGIN
USE DATABASE tduser;
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
BEGIN
CREATE OR REPLACE TABLE employee_bkup (
EmployeeNo INTEGER,
FirstName CHAR(30),
LastName CHAR(30),
DepartmentNo SMALLINT,
NetPay INTEGER,
UNIQUE (EmployeeNo)
);
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
BEGIN
DROP TABLE employee_bkup;
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
IF (STATUS_OBJECT['SQLCODE'] /*** SSC-FDM-TD0013 - THE SNOWFLAKE ERROR CODE MISMATCH THE ORIGINAL TERADATA ERROR CODE ***/ != 0) THEN
RETURN STATUS_OBJECT['SQLCODE'] /*** SSC-FDM-TD0013 - THE SNOWFLAKE ERROR CODE MISMATCH THE ORIGINAL TERADATA ERROR CODE ***/;
END IF;
--.LOGOFF
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'LogOff' NODE ***/!!!
null;
END
$$
2. Bash Variable Placeholders Example¶
SnowConvert AI prend en charge la migration du code BTEQ avec des espaces réservés de variables Bash utilisés pour les scripts Shell, ces espaces seront migrés vers son équivalent SnowSQL et SSC-FDM-TD0003 sera ajouté au code. Veuillez tenir compte des points suivants lors de la migration du code avec ces espaces réservés :
SnowConvert AI ne prend pas en charge la migration des scripts shell ; pour migrer le code BTEQ, veuillez l’isoler dans un fichier BTEQ et le fournir comme entrée pour l’outil.
SnowSQL avec la substitution de variable activée est nécessaire pour exécuter le code migré ; pour plus d’informations sur la façon d’utiliser SnowSQL consultez SSC-FDM-TD0003 and the official documentation for SnowSQL.
Teradata BTEQ¶
-- Additional Params: -q SnowScript
.LOGON dbc, dbc;
DATABASE testing;
SELECT $columnVar FROM $tableVar WHERE col2 = $nameExprVar;
INSERT INTO $tableName values ('$myString', $numValue);
UPDATE $dbName.$tableName SET col1 = $myValue;
DELETE FROM $tableName;
.LOGOFF;
Snowflake SQL¶
EXECUTE IMMEDIATE
$$
--** SSC-FDM-TD0003 - BASH VARIABLES FOUND, USING SNOWSQL WITH VARIABLE SUBSTITUTION ENABLED IS REQUIRED TO RUN THIS SCRIPT **
DECLARE
STATUS_OBJECT OBJECT := OBJECT_CONSTRUCT('SQLCODE', 0);
BEGIN
-- Additional Params: -q SnowScript
--.LOGON dbc, dbc
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'BTLogOn' NODE ***/!!!
null;
BEGIN
USE DATABASE testing;
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
BEGIN
SELECT
&columnVar
FROM
&tableVar
WHERE
col2 = &nameExprVar;
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
BEGIN
INSERT INTO &tableName
VALUES ('&myString', &numValue);
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
BEGIN
UPDATE &dbName.&tableName
SET
col1 = &myValue
;
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
BEGIN
DELETE FROM
&tableName;
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLROWCOUNT', SQLROWCOUNT);
EXCEPTION
WHEN OTHER THEN
STATUS_OBJECT := OBJECT_CONSTRUCT('SQLCODE', SQLCODE, 'SQLERRM', SQLERRM, 'SQLSTATE', SQLSTATE);
END;
--.LOGOFF
!!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'LogOff' NODE ***/!!!
null;
END
$$
Problèmes connus¶
Certaines commandes BTEQ peuvent ne pas avoir d’équivalents dans Snowflake SQL
Comme BTEQ est un programme basé sur des commandes, il se peut que certaines commandes de votre code d’entrée n’aient pas une équivalence fonctionnelle totale dans Snowflake SQL. Ces cas particuliers sont identifiés, signalés par des avertissements dans le code de sortie et documentés dans les pages suivantes.