我经常需要在我的一个数据库中的某个表上运行一个查询,如果没有必要的话,我宁愿不必创建一个文件并将其作为脚本调用。我希望能够将查询作为字符串直接发送到sqlplus,如下所示
sqlplus user/pass@hostname:port/service "select * from table"
而不必创建一个只保存该查询的文件并使用调用它
sqlplus user/pass@hostname:port/service @filename
有人知道这是否可行吗?
bvjxkvbb1#
除了mathguy的答案,对于linux shells,你可以像这样使用运算符here-string:
linux shells
here-string
sqlplus user/pass@hostname:port/service <<< 'select * from table;'
不要忘记查询末尾的分号。
mlnl4t2r2#
我认为sqlplus命令不接受SQL语句(作为字符串)作为命令行参数,您可以交互式或批处理(给定.sql文件作为输入)运行sqlplus。然而,你可以使用操作系统工具来做你所要求的事情,我不知道这在Windows中是如何工作的,但是在Unix/Linux中你可以使用here document。(出于隐私考虑,我屏蔽了密码和机器名,但除此之外,它是显示命令及其输出的屏幕截图)
sqlplus
.sql
here document
[oracle@******** ~]$ sqlplus mathguy/********@orclpdb <<EOF > select empno, ename, sal > from scott.emp > where deptno = 30; > EOF SQL*Plus: Release 12.2.0.1.0 Production on Fri Mar 26 15:15:30 2021 Copyright (c) 1982, 2016, Oracle. All rights reserved. Last Successful login time: Fri Mar 26 2021 15:14:40 -07:00 Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> 2 3 EMPNO ENAME SAL ---------- ---------- ---------- 7499 ALLEN 1600 7521 WARD 1250 7654 MARTIN 1250 7698 BLAKE 2850 7844 TURNER 1500 7900 JAMES 950 6 rows selected. SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production [oracle@******** ~]$
2izufjch3#
永远不要在sqlplus命令旁边输入您的凭据,而是通过变量赋值使用/nolog选项,以便在其他人发出ps命令时显示凭据,例如
/nolog
ps
rec=$(sqlplus -S /nolog << EOF conn un/pwd@mydb set pages 1001 set linesize 500 set feedback off SELECT * FROM tab; exit EOF ) echo $rec
huwehgph4#
下面是Windows版本:
echo select 1 from dual; | sqlplus -s username/password@service
您可以使用它来实现Powershell脚本中的Docker健康检查等功能:
$chekdbsql = "`nselect 1 from dual;" $chkdb = "" $chkdb = ($chekdbsql | cmd /c "sqlplus username/password@service") if ($chkdb.Contains("OPEN") -eq 'True'){ exit 0 } else { exit 1 }
4条答案
按热度按时间bvjxkvbb1#
除了mathguy的答案,对于
linux shells
,你可以像这样使用运算符here-string
:不要忘记查询末尾的分号。
mlnl4t2r2#
我认为
sqlplus
命令不接受SQL语句(作为字符串)作为命令行参数,您可以交互式或批处理(给定.sql
文件作为输入)运行sqlplus
。然而,你可以使用操作系统工具来做你所要求的事情,我不知道这在Windows中是如何工作的,但是在Unix/Linux中你可以使用
here document
。(出于隐私考虑,我屏蔽了密码和机器名,但除此之外,它是显示命令及其输出的屏幕截图)2izufjch3#
永远不要在
sqlplus
命令旁边输入您的凭据,而是通过变量赋值使用/nolog
选项,以便在其他人发出ps
命令时显示凭据,例如huwehgph4#
下面是Windows版本:
您可以使用它来实现Powershell脚本中的Docker健康检查等功能: