Oracle:如何在Unix层保存查询结果

时间:2011-10-21 14:33:56

标签: sql unix filesystems oracle11g

如何将查询结果保存到Unix文件系统中。如果它可能我需要一步一步的过程。

我做了什么。 在Unix文件系统中创建了一个目录。 在oracle中创建了一个目录,指向Unix文件系统目录。

试图将结果假脱机到Unix文件系统但由于某些原因它起作用了。

如果任何1有帮助,

会很感激。 在客户端Windows XP上工作。 环境:oracle 11g和 应用程序:oracle 11的TOAD。

2 个答案:

答案 0 :(得分:1)

您可以使用外部表卸载。这将以datapump格式创建查询结果的转储文件(您可以使用impdp导入此文件)
为了做到这一点,创建和外部表的类型是ORACLE_DATAPUMP。

这是一个例子:

SQL> 
SQL> 
SQL> 
SQL> CREATE TABLE emp_ext
ORGANIZATION EXTERNAL
(
 TYPE ORACLE_DATAPUMP
 DEFAULT DIRECTORY EXPORT
LOCATION ( 'emp_ext.dmp' )
 )
 AS SELECT * FROM SCOTT.EMP;  

Table created.

SQL> select count(*) from emp_ext;

  COUNT(*)
----------
        18

SQL> !ls /export/home/oracle/export     
 EMP_EXT_13392.log  emp_ext.dmp

答案 1 :(得分:0)

第一。在Unix文件系统中创建目录(不是在你的名下,否则它不会工作)然后chmod 777 <dir_path>

2nd在oracle中创建一个目录

CREATE OR REPLACE DIRECTORY <dir_name> AS '<dir_path>';

现在进行测试

create or replace procedure  WRITEFILE is
       fh UTL_FILE.FILE_TYPE;                                                   
       dir VARCHAR2(30) := '<dir_name>';                                                        
       name VARCHAR2(30)  := 'test1';                                                       
    begin                                                                    

       fh := UTL_FILE.FOPEN(dir, name, 'w');                                    
       UTL_FILE.PUT_LINE(fh, 'bla bla');                                         
       UTL_FILE.FCLOSE(fh);
    end;