是teradata BTEQ中的echo vallid语法吗
任何人都可以解释我下面的bteq代码 这个脚本有效吗是teradata BTEQ中的echo vallid语法吗,teradata,sql-scripts,Teradata,Sql Scripts,任何人都可以解释我下面的bteq代码 这个脚本有效吗 exec 1> $CODE/edlr2/logs/AGP_MBR_BTEQ_CSA_MBR_STG_LOAD_$(date +"%Y%m%d_%H%M%S").log 2>&1`echo "script file =" $0 PARM_FILE=$1 echo "parm file= "$PARM_FILE.parm . $CODE/edlr2/scripts/$PARM_FILE.parm select name fro
exec 1> $CODE/edlr2/logs/AGP_MBR_BTEQ_CSA_MBR_STG_LOAD_$(date +"%Y%m%d_%H%M%S").log 2>&1`echo "script file =" $0 PARM_FILE=$1 echo "parm file= "$PARM_FILE.parm . $CODE/edlr2/scripts/$PARM_FILE.parm select name from customer;
有人能解释一下这个代码吗参见:
exec 1>$CODE/edlr2/logs/AGP\U MBR\U BTEQ\U CSA\U MBR\U STG\U LOAD\U$date+%Y%m%d\UH%m%S.log
这会写入日志文件
2>&1 `echo "script file =" $0 PARM_FILE=$1 echo "parm file= "$PARM_FILE.parm . $CODE/edlr2/scripts/$PARM_FILE.parm select name from customer;
2> &1将文件描述符2指向上面1已经指向.log文件的位置
然而,看起来你在上面的某个地方错过了一个结束的坟墓,因为你在echo之前开始了一个坟墓,但从来没有关闭它。所以我认为这个脚本是无效的。但是我也不知道如何设置数据库来评估其余的是否有效。除非您能提供有关文件设置和运行方式的具体错误和信息,否则很难为您提供帮助
其他信息:exec将在某个位置运行脚本,因此部分:
echo "script file =" $0 PARM_FILE=$1 echo "parm file= "$PARM_FILE.parm . $CODE/edlr2/scripts/$PARM_FILE.parm select name from customer;
实际上是运行命令脚本并将其记录到日志文件中。它将输出并运行如下内容:
script file=/var/somefile
parm file=/var/someparms.parm
. /var/anotherparmfile.parm select name from customer;
实际上,它既不是unix脚本,也不是一些代码,也不是bteq可以使用的东西 我的猜测是,你的“脚本”看起来像这样,因为打字错误而忽略了孤独
exec 1> $CODE/edlr2/logs/AGP_MBR_BTEQ_CSA_MBR_STG_LOAD_$(date +"%Y%m%d_%H%M%S").log 2>&1
echo "script file =" $0
PARM_FILE=$1
echo "parm file= "$PARM_FILE.parm
. $CODE/edlr2/scripts/$PARM_FILE.parm select name from customer;
正如@Xander已经猜到的,它会将输出重定向到日志文件,打印有关脚本和日志文件名的信息,然后使用一些参数执行脚本$PARM_file.PARM
进一步猜测,由于日志文件的名称中提到了BTEQ,因此.parm脚本BTEQ可用于执行作为参数传递给它的SQL命令
bteq需要一个登录命令。如果将其添加到.parm脚本中,在连接的参数之前,并传递给bteq,您可能会得到一些有意义的完整响应
要知道,;最后将永远不会传递给脚本。shell将把它作为命令结束标记。而.parm脚本必须添加;也无法构造有效的SQL命令
为什么使用点命令来执行名为.parm的脚本超出了我的想象。寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。我不理解此代码,它是由其他人编写的。你能解释一下这里发生了什么吗?这不是BTEQ脚本,它是一个shell脚本,可能创建了一个用BTEQ lateris echo BTEQ脚本命令提交的脚本,或者它是linux命令。它在这里有效吗?我可以在bteqis echo bteq脚本命令上运行这个查询吗?或者它是linux命令。Echo是许多语言和系统中的一个常用术语,在这种情况下,它看起来是一个bash/terminal命令,因为它与1>和2>&1一起使用,而bteq不解析它?如果我跑this@XYZ不,所有回显都将由终端运行。我更新了我的答案。