将 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