【问题标题】:How to output oracle sql result into a file in windows?如何将oracle sql结果输出到windows中的文件中?
【发布时间】:2013-02-21 14:29:12
【问题描述】:

我试过了

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

但是 SQL plus 给了我“没有适当的结束” windows下oracle sql如何指定路径?

【问题讨论】:

    标签: sql oracle sqlplus


    【解决方案1】:

    使用线轴:

    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 实例,因此您可能需要自己做一些工作来调试我从内存中编写的内容。

    【讨论】:

    • 谢谢,但我能问一下假脱机文件 myoutputfile.txt 的位置吗?另外用户没有权限运行假脱机怎么办?
    • 另外,我们如何指定输出文件的路径/文件夹,尤其是在 Windows 中?
    • 我从来没有运气指定假脱机的写入位置,除非从假脱机输出所在的目录运行sqlplus.exe
    • 我不明白你的问题。在 SQL*plus 中,准确输入我在解决方案中所写的内容。您将在名为myoutputfile.txt 的文件中获得输出。如果您没有在预期的位置看到它,请执行搜索。你是如何执行 SQLPlus 的?从哪个目录?
    • 请注意,如果您未在假脱机文件名上指定文件扩展名(如示例中的 .txt),则会自动附加扩展名 .lst。
    【解决方案2】:

    与 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
    

    【讨论】:

    • 是的。我打算添加set pages 0set trimspool on 等。但后来问题变了,我不得不追查别的东西!不过建议很好。
    • 感谢 John,您的版本返回了我正在寻找的干净 SQL 输出
    【解决方案3】:

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

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

    之后只用 nano 或 vi myoutputfile.txt,你会看到所有的 sql track。

    希望能帮到你:)

    【讨论】:

      【解决方案4】:
      spool "D:\test\test.txt"
      
      select  
        a.ename  
      from  
        employee a  
      inner join department b  
      on  
      (  
        a.dept_id = b.dept_id  
      )  
      ;  
      spool off  
      

      这个查询会将 sql 结果假脱机到 D:\test\test.txt

      【讨论】:

        【解决方案5】:

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

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

        说明

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

        sqlplus schemaName/schemaPassword@sid @plsqlScript.sql在架构schemaName中执行plssql脚本plsqlScript.sql,密码schemaPassword连接到SIDsid

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

        【讨论】:

        • 我认为最好在.sql 文件中进行假脱机。将标准输出重定向到文件可能会导致文件中出现不需要的 SQL 反馈输出。此外,您可以只在 .sql 文件中使用 quit(或 exit)。
        猜你喜欢
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        • 2023-02-06
        • 2020-06-15
        相关资源
        最近更新 更多