如何使用谓词变量从 UNIX 执行 psql?

How to execute psql from UNIX with variable for predicates?

我想知道如何在 Postgres 的另一个 RDBMS 中执行与我 运行 下面的代码等效的操作。

UNIX 脚本:

call_rdbms_sql.sh

内容:

CONNDETAILS<<EOF
select col1 from table1 where col1='&ValueofCol1';
EOF

我将其执行为:

UNIXPROMPT$> ksh ./call_rdbms_sql.sh col1valuepassed

这将传递给 unix 脚本中的 sql 脚本并提供结果。

我能够设置调用 postgres 的 unix 脚本 sql。只要 sql 脚本没有提供任何提示,这部分就可以正常工作。

但是,我想将值传递给 "Where clause"。

-gv

您可以使用 psql-v 选项传递变量

val=   #set the first argument to val
if [ -z $val ]           #check if it is set, exit script if it's not
then
   echo "Invalid input"
exit
fi

psql conndetails  -v ValueofCol1=$val<<EOF
select col1 from table1 where col1=:'ValueofCol1'; --use : before quoting 
                                                   --variable name
EOF