我没有输出到我的FILE进行查询。当我在oracle中运行时,我可以看到计数。有人可以让我知道我在做什么错吗?
#!/bin/bash
ORACLE_HOME=*path*
TNS_ADMIN=*path*
export ORACLE_HOME
export TNS_ADMIN
FILE="/tmp/score_cnt.txt"
sqlplus -S user/pass@service<< EOF
spool $FILE
select count(*) from score_tbl
spool off
exit;
EOF
似乎是将*nix
变量传递给SQL*Plus
会使这里的事情变得混乱。
据我所知,您希望在脚本中传递文件名,那么最简单的机制是将其直接定义为SPOOL
文件(而不是对其进行参数化。)]
此外,您可以添加一些非常有用的SET
参数来美化输出。
结尾sqlplus -S user/pass@service << EOF SET LINESIZE 32000 SET PAGESIZE 0 SET TRIMSPOOL ON SET TRIMOUT ON SET WRAP OFF SET TERMOUT OFF spool /tmp/score_cnt.txt select count(*) from score_tbl; spool off EOF
PS-
EOF
在sqlplus和exit
中不需要其他select
语句必须以;