如何使用谓词变量从 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
我想知道如何在 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