32

我试过

select * from users 
save D:\test.sql create;

但是 SQL plus 给了我“没有正确的结束” 如何在 windows 中的 oracle sql 中指定路径?

4

5 回答 5

60

使用线轴:

spool myoutputfile.txt
select * from users;
spool off;

请注意,这将在您运行 SQL*Plus 的目录中创建 myoutputfile.txt。

如果您需要在 SQLPlus 启动时从 SQL 文件(例如,“tmp.sql”)运行它并输出到名为“output.txt”的文件:

tmp.sql:

select * from users;

命令:

sqlplus -s username/password@sid @tmp.sql > output.txt

请注意,我现在没有 Oracle 实例,因此您可能需要自己做一些工作来调试我从内存中编写的内容。

于 2013-03-06T17:01:32.433 回答
19

与 Marc 非常相似,唯一的区别是我将假脱机设置为如下参数:

WHENEVER SQLERROR EXIT 1
SET LINES 32000
SET TERMOUT OFF ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF
SET SERVEROUTPUT ON

spool &1

-- Code

spool off
exit

然后将 SQLPLUS 称为

sqlplus -s username/password@sid @tmp.sql /tmp/output.txt
于 2013-03-06T17:33:29.277 回答
3
spool "D:\test\test.txt"

select  
  a.ename  
from  
  employee a  
inner join department b  
on  
(  
  a.dept_id = b.dept_id  
)  
;  
spool off  

此查询将在 D:\test\test.txt 中后台处理 sql 结果

于 2016-08-05T08:43:26.483 回答
2

只是为了使答案 2 更容易,您还可以定义可以放置保存文件的文件夹

    spool /home/admin/myoutputfile.txt
    select * from table_name;
    spool off;

之后仅使用 nano 或 vi myoutputfile.txt,您将看到所有 sql 轨道。

希望有帮助:)

于 2015-11-06T09:22:34.277 回答
2

在 Windows 10 和 Windows Server 2012 上做同样的工作。我找到了以下解决方案:

echo quit |sqlplus schemaName/schemaPassword@sid @plsqlScript.sql > outputFile.log

解释

echo quit |sqlplus脚本完成后发送 quit 命令退出

sqlplus schemaName/schemaPassword@sid @plsqlScript.sql使用连接到 SID的密码plsqlScript.sql在模式中执行 plssql 脚本schemaNameschemaPasswordsid

> outputFile.log将 sqlplus 输出重定向到日志文件outputFile.log

于 2020-03-09T15:38:37.190 回答