如何通过批处理文件连接到 SQL Plus 来运行 SQL 查询
Posted
技术标签:
【中文标题】如何通过批处理文件连接到 SQL Plus 来运行 SQL 查询【英文标题】:How to run a SQL query by connecting to SQL Plus through Batch file 【发布时间】:2020-10-28 17:25:02 【问题描述】:我需要通过批处理文件连接到 SQL Plus 来运行 SQL 查询。
因此,我在记事本中创建了一个批处理文件“test.bat”并编写了以下内容:-
@echo off
set /p uname=Enter SQLPlus username:
set /p pwd=Enter SQLPlus password with instance:
sqlplus %uname%/%pwd%
select table_name from all tables
order by table_name;
pause
当我运行批处理文件时,我能够登录到 SQLplus,但在 cmd 中它会打印 SQL>
而且我需要手动输入选择命令。
如何让 select 语句自动运行?
【问题讨论】:
检查this、this和this 尝试了那里所述的命令,但仍然无法正常工作 【参考方案1】:您可以将您的 SELECT 语句放在另一个文件中,SQL*Plus 将使用 @
符号调用该文件:
c:\> type test.sql
select sysdate from dual;
exit
c:\> type test.bat
@echo off
set /p uname=Enter SQLPlus username:
set /p pwd=Enter SQLPlus password with instance:
sqlplus -s %uname%/%pwd% @test.sql
C:\> test.bat
Enter SQLPlus username: MYUSER
Enter SQLPlus password with instance: MYPWD
SYSDATE
-------------------
2020-10-28 19:59:46
如果无法创建单独的 .SQL 文件,您可以尝试以下操作:
echo select sysdate from dual; | sqlplus -s %uname%/%pwd%
【讨论】:
谢谢,@Marco 但是由于一些限制,我不能使用单独的 SQL 文件 @AmarKumar 我已经扩展了我的答案 它仍然提示我 SQL> 而且 SQL 命令没有运行【参考方案2】:有办法做到这一点
将代码括在括号中echo
-ing 括号内的每一行
并且 - 如有必要(如在我的示例中) - 使用 3 个 ^
符号转义 <
。
最后,管道到 SQL*Plus
看起来有点愚蠢,但它确实有效。方法如下。
p1.bat
脚本:
@echo off
set /p uname=Enter SQLPlus username:
set /p pwd=Enter SQLPlus password with instance:
(
echo select table_name
echo from user_tables
echo where rownum ^^^<= 5
echo order by table_name;
) | sqlplus %uname%/%pwd%
测试:
c:\Temp>p1
Enter SQLPlus username:scott
Enter SQLPlus password with instance:tiger
SQL*Plus: Release 11.2.0.2.0 Production on Sri Lis 28 21:45:34 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
SQL> 2 3 4
TABLE_NAME
------------------------------
BONUS
DEPT
EMP
LINKS
SALGRADE
SQL> Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
c:\Temp>
在我看来,单独的.SQL
文件更简单。看看你是否可以避免你提到的那个“限制”。
【讨论】:
嗨,@Littlefoot 实际上我不能使用单独的 .SQL 文件,因为在批处理文件的不同部分运行多个 SQL 查询,而且我对创建新文件夹和任何可避免的文件有一些限制也是。 好的,然后使用我的建议。以上是关于如何通过批处理文件连接到 SQL Plus 来运行 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
从 Table Plus 连接到我的本地 docker 数据库实例
PL/SQL 如何查看当前连接信息以及SQL PLUS如何指定IP地址