【问题标题】:How to call Oracle SQL query using bash shell script如何使用 bash shell 脚本调用 Oracle SQL 查询
【发布时间】:2023-01-18 16:31:56
【问题描述】:

如何使用 bash shell 脚本调用 sql 查询。我试过下面但似乎有一些语法错误:

#!/bin/sh
LogDir='/albt/dev/test1/test2/logs' # log file 
USER='test'     #Enter Oracle DB User name
PASSWORD='test'  #Enter Oracle DB Password
SID='test'        #Enter SID
sqlplus -s << EOF > ${LogDir}/sql.log 
${DB_USER_NAME}/${DB_PASSWORD}@${DB_SID} 
SELECT count(1) FROM dual; #  SQL script here to get executed  
EOF 
var=$(SELECT count(1) FROM dual)

我收到了 - 意外的令牌错误

#!/bin/sh
user="test"
pass="test"
var="$1"
sqlplus -S $user/$pass <<EOF
 SELECT * FROM tableName WHERE username=$var;  
 exit;
EOF

我得到 - sqlplus:找不到命令 - 当我运行上面的脚本时

谁能指导我?

【问题讨论】:

  • “似乎有一些语法错误”是什么意思?确切的错误是什么?另外,您的最后一行似乎不正确。
  • 是的,它抛出语法错误
  • 请删除狂欢标签。看起来 bash 不会参与您的脚本。

标签: linux bash shell unix scripting


【解决方案1】:

在您的第一个脚本中,一个错误是使用count(1)。整条线是

var=$(SELECT count(1) FROM dual)

这意味着 shell 应该使用参数执行名为 SELECT 的程序数(1),,并将其标准输出存储到变量var中。我想你想改为将 SELECT 命令输入 sqlplus,即类似

var=$(sqlplus .... )

在您的第二个脚本中,错误消息仅表示sqlplus在您的路径中找不到。将其添加到 PATH 或显式提供命令的绝对路径。

【讨论】:

    猜你喜欢
    • 2023-01-16
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2015-05-17
    • 2020-09-22
    • 2017-10-12
    • 2019-10-31
    • 1970-01-01
    相关资源
    最近更新 更多