Sqlplus oracle:如何在 1 行中在 bash 上运行 sql 命令?

Posted

技术标签:

【中文标题】Sqlplus oracle:如何在 1 行中在 bash 上运行 sql 命令?【英文标题】:Sqlplus oracle : How can I run sql command on bash in 1 line? 【发布时间】:2012-06-28 03:49:39 【问题描述】:

我可以在 sqlplus 中将其转换为 bash 上的 1 个命令行吗?因为我想自动化它。

sqlplus / as sysdba
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
exit

【问题讨论】:

【参考方案1】:

您不需要自动退出,因为无论如何它都应该在文件末尾退出。因此,您可以在一行中这样做:

echo 'EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);' | sqlplus / as sysdba

【讨论】:

谢谢。这将是最好的答案,因为我根本不想创建额外的 .sh 或 .sql 我用选择查询尝试这个命令,但什么也没发生。它只是登录然后断开连接。我该怎么办? 听起来您缺少 ;/ (单独一行)来实际运行命令。只是猜测,您需要提供更多详细信息才能获得更好的答案【参考方案2】:
sqlplus user/password@host @file.sql

【讨论】:

【参考方案3】:

你可以在 shell 中通过 follow 来写

#!/bin/bash
sqlplus / as sysdba <<EOF
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
exit
EOF

或者你可以把这个command放到一个过程中

【讨论】:

【参考方案4】:

sqlplus /nolog @your_script.sql

【讨论】:

那行不通,因为 /nolog 会阻止 SQL*Plus 登录到数据库。 当然不会 - 如果不将connect 命令放入脚本中。

以上是关于Sqlplus oracle:如何在 1 行中在 bash 上运行 sql 命令?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 echo 设置 LINESIZE ORACLE

退格在 sqlplus 命令行中不起作用

linux下shell脚本中sqlplus调用shell变量的问题

sqlplus如何连接oracle数据库?

进入oracle后,sqlplus如何登陆?

Oracle--sqlplus如何设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置