将 Shell 中的变量传递给 Teradata BTEQ
Passing Variable in Shell to Teradata BTEQ
我是 Unix 和 Terdata BTEQ 的新手。我想将变量传递给 .sh 文件,该文件调用具有 SQL 代码的 .sql 文件。
在此之前,我试图至少在 .sh 文件中定义参数值,并在 .sh 文件本身中包含 SQL 代码。但是它似乎不起作用,
以下是我正在尝试的代码,
temp_table=`PRP_D1_WORK.ADHOC_CMSC_NIEL_BRND_DICT_STG`
.LOGON tddev/username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT
现在我 运行 在 Unix 中(通过 putty)使用命令:
bteq < sample.sh
我在这里得到的错误是 $temp_table 不存在,我认为这意味着变量没有被传递。
一旦我能够实现这一点,我想在执行 shell 脚本或通过定义 HERE 文档时传递变量值。
让我知道这种情况下的错误是什么。
谢谢,
普里亚什
好的,我解决了。
我应该在 .sh 文件中包含 bteq
并且 运行 .sh 而不是 bteq < sample.sh
成功了。
转到下一个问题,我能否将 .sh 文件顶部定义的参数传递给 .sql 文件,我将在 .sh 中调用该文件
使用
.运行 example.sql
当然可以,您可以将参数作为
传递给 shell 脚本
sample.sh temp_table_name login_id
在脚本中,您需要使用 $1、$2 ...等等,其中 $1 是第一个参数,$2 是第二个参数,依此类推。
这里 temp_table 是您作为第一个参数传递的 temp_table_name 和 $2=login_id
temp_table=
.LOGON /username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT
我是 Unix 和 Terdata BTEQ 的新手。我想将变量传递给 .sh 文件,该文件调用具有 SQL 代码的 .sql 文件。 在此之前,我试图至少在 .sh 文件中定义参数值,并在 .sh 文件本身中包含 SQL 代码。但是它似乎不起作用,
以下是我正在尝试的代码,
temp_table=`PRP_D1_WORK.ADHOC_CMSC_NIEL_BRND_DICT_STG`
.LOGON tddev/username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT
现在我 运行 在 Unix 中(通过 putty)使用命令:
bteq < sample.sh
我在这里得到的错误是 $temp_table 不存在,我认为这意味着变量没有被传递。
一旦我能够实现这一点,我想在执行 shell 脚本或通过定义 HERE 文档时传递变量值。
让我知道这种情况下的错误是什么。
谢谢, 普里亚什
好的,我解决了。 我应该在 .sh 文件中包含 bteq
并且 运行 .sh 而不是 bteq < sample.sh
成功了。
转到下一个问题,我能否将 .sh 文件顶部定义的参数传递给 .sql 文件,我将在 .sh 中调用该文件 使用 .运行 example.sql
当然可以,您可以将参数作为
传递给 shell 脚本sample.sh temp_table_name login_id
在脚本中,您需要使用 $1、$2 ...等等,其中 $1 是第一个参数,$2 是第二个参数,依此类推。 这里 temp_table 是您作为第一个参数传递的 temp_table_name 和 $2=login_id
temp_table=
.LOGON /username,Pass
.SET WIDTH 1500 ;
.set heading '';
SELECT COUNT(*) FROM $temp_table;
.LOGOFF
.EXIT