【问题标题】:Oracle write to fileOracle 写入文件
【发布时间】:2010-09-06 20:29:34
【问题描述】:

我正在运行 oracle 并有一个从数据库中提取一些结果的查询。我想将结果写成文本文件。我该怎么做呢?

我的首选方式是使用 UTL_FILE。有人可以举例说明如何做到这一点吗?

【问题讨论】:

    标签: oracle


    【解决方案1】:

    将 UTL_FILE 与 CREATE DIRECTORY 结合使用,以便轻松映射具有名称的目录路径(它不会创建实际目录,只是对其的引用,因此请确保首先创建它)

    例子

    
      create directory logfile as 'd:\logfile'; -- must have priv to do this
    
    declare
      vFile utl_file.file_type;
    begin
      vFile := utl_file.fopen(logfile ,'syslog','w'); -- w is write. This returns file handle
      utl_file.put(vFile,'Start Logfile'); -- note use of file handle vFile
      utl_file.fclose(vFile); -- note use of file handle vFile
    end;
    
    

    【讨论】:

      【解决方案2】:

      这似乎是一个合理的教程,有几个简单的例子UTL_FILE example

      【讨论】:

        【解决方案3】:

        如果你使用 PL/SQL 那么你可以使用 UTL_FILE 包,与使用 sql+ spool 的区别在于文件被写入服务器文件系统。 UTL_FILE 有许多限制,因此服务器端的替代方法是使用 Java 存储过程。

        【讨论】:

          【解决方案4】:

          如果您使用的是 Sql Plus,那么简单:

          SQL> 假脱机 c:\temp\out.txt SQL> 选择 * 从用户; SQL> 假脱机

          这三句话会将查询“SELECT * FROM USERS”的结果输出到文件c:\temp\out.txt。

          您可以使用 Oracle 的字符串操作函数来格式化此查询。

          【讨论】:

            【解决方案5】:

            如果您从 sqlplus 运行查询,则可以使用 spool 命令:

            假脱机/tmp/test.spool

            在会话中执行 spool 命令后,所有输出都会发送到 sqlplus 控制台以及 /tmp/test.spool 文本文件。

            【讨论】:

              猜你喜欢
              • 2018-10-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-06
              • 2018-08-13
              • 2011-09-01
              • 1970-01-01
              相关资源
              最近更新 更多