Teradata:尽管有错误,但保留 运行 脚本
Teradata: Keep running the script although there are errors
我有一个很长的脚本,其中包含 sql 对 teradata 运行 的语句。我希望脚本保持 运行ning 直到结束,并将错误保存在日志文件中,并且它会在出现每个错误时停止。我该怎么做?
感谢
假设您使用的是 Teradata SQL 助手:
单击菜单栏中的工具,然后单击选项,然后单击查询。有一个复选框显示 "Stop query execution if an SQL error occurs"
要获取最新的错误,请按 F11。否则,从菜单栏单击工具,然后显示历史记录。双击其中一条历史记录左侧的行号,它会弹出一个屏幕,其中包含每个语句的结果消息。您也可以直接从 DBC 中的 QryLog 视图之一查询此类信息。
错误可以有多种类型,有些可以绕过,有些则不能。例如,使用本机 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 上,如果使用推荐的命令,您可以关闭当前 window 甚至终止与 ETL 服务器的网络会话。
如果您在日志末尾看到有关 EOL 行的警告,请忽略它;这是因为为了简单起见,我忽略了一些可选的 BTEQ 语句,这些语句确保更干净的退出。
我有一个很长的脚本,其中包含 sql 对 teradata 运行 的语句。我希望脚本保持 运行ning 直到结束,并将错误保存在日志文件中,并且它会在出现每个错误时停止。我该怎么做?
感谢
假设您使用的是 Teradata SQL 助手:
单击菜单栏中的工具,然后单击选项,然后单击查询。有一个复选框显示 "Stop query execution if an SQL error occurs"
要获取最新的错误,请按 F11。否则,从菜单栏单击工具,然后显示历史记录。双击其中一条历史记录左侧的行号,它会弹出一个屏幕,其中包含每个语句的结果消息。您也可以直接从 DBC 中的 QryLog 视图之一查询此类信息。
错误可以有多种类型,有些可以绕过,有些则不能。例如,使用本机 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 上,如果使用推荐的命令,您可以关闭当前 window 甚至终止与 ETL 服务器的网络会话。
如果您在日志末尾看到有关 EOL 行的警告,请忽略它;这是因为为了简单起见,我忽略了一些可选的 BTEQ 语句,这些语句确保更干净的退出。