如何将查询结果保存到Unix文件系统中。如果它可能我需要一步一步的过程。
我做了什么。 在Unix文件系统中创建了一个目录。 在oracle中创建了一个目录,指向Unix文件系统目录。
试图将结果假脱机到Unix文件系统但由于某些原因它起作用了。
如果任何1有帮助,会很感激。 在客户端Windows XP上工作。 环境:oracle 11g和 应用程序:oracle 11的TOAD。
答案 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;