错误可以有多种类型,有些可以绕过,有些则不能。例如,使用本机 Teradata 工具和实用程序,您可以让脚本忽略运行时错误,甚至是语法错误,但通常不可能忽略网络连接错误并仍然获得查询的剩余部分执行。
一般在这种情况下,您希望使用 BTEQ 工具来执行可以忽略执行错误的 SQL。 BTEQ是标准的Teradata工具,可以从Teradata网站免费下载,一般用户通过纯SQL查询Teradata时安装。
要创建一个可行的 BTEQ 脚本,只需将所有查询复制粘贴到纯文本文件中,用分号 ; 分隔所有查询,然后在该纯文本文件的最顶部添加如下所述的登录语句
.logon Teradata_IP_Address/your_UserName,your_Password;
示例脚本:
.logon 127.0.0.1/dbc,dbc;
/*Some sample queries. Replace these with your actual queries*/
SELECT Current_Timestamp;
CREATE TABLE My_Table (Dummy INTEGER) PRIMARY INDEX (Dummy);
所以 BTEQ 帮助您解决了执行错误。为避免网络连接问题,理想情况下,您希望在与 Teradata 保持持续连接并安装了 Teradata 工具和实用程序的服务器上执行该操作。这样的服务器可以称为 ETL 服务器、登陆服务器、边缘节点或托管服务器(或其他名称,具体取决于您的环境)。您肯定需要该服务器的登录凭据(如果您还没有访问权限)。执行 bteq 脚本的首选命令是
Windows:bteq < yourscriptname >routine_logfile 2>error_logfile
Linux (bash/ksh):nohup bteq < yourscriptname >routine_logfile 2>error_logfile &
如果您在 Windows 上,请确保不要关闭命令提示符。在 Linux 上,如果您使用推荐的命令,您可以关闭当前窗口甚至终止与 ETL 服务器的网络会话。
如果您在日志末尾看到有关 EOL 行的警告,请忽略它;这是因为为了简单起见,我忽略了一些可选的 BTEQ 语句,这些语句可以确保更清晰的退出。