Teradata:尽管存在错误,仍然继续运行脚本

时间:2016-09-14 15:25:33

标签: teradata

我有一个带有sql语句的长脚本可以在teradata上运行。我希望脚本一直运行到最后,并将错误保存在日志文件中,并且它将在每个错误上停止。我该怎么办?

谢谢

2 个答案:

答案 0 :(得分:2)

假设您使用的是Teradata SQL Assistant:
单击菜单栏中的Tools,然后单击Options,然后单击Query。有一个复选框,表示"如果发生SQL错误,请停止查询执行"

要获取最新的错误,请点击F11。否则,从菜单栏中单击“工具”,然后显示历史记录。双击其中一个历史记录左侧的行号,将显示一个屏幕,其中包含每个语句的结果消息。您还可以直接从DBC中的一个QryLog视图查询此类信息。

答案 1 :(得分:0)

错误可以是多种类型,有些可以绕过,有些则不可以。例如,使用本机Teradata工具和实用程序,您可以使脚本忽略运行时错误,甚至语法错误,但通常不可能忽略网络连接错误,仍然可以查看剩余的部分查询执行。

通常在这种情况下,您希望使用BTEQ工具执行SQL,您可以在其中忽略执行错误。 BTEQ是一个标准的Teradata工具,可以从Teradata网站免费下载,通常由用户通过普通SQL查询Teradata来安装。

要创建可行的BTEQ脚本,只需将所有查询粘贴到纯文本文件中,用分号;分隔所有查询,并在该纯文本文件的最顶部添加如下所述的登录语句< / p>

.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 Tools and Utilities的服务器上执行该操作。这样的服务器可以称为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语句,以确保更清晰的退出。