ORACLE 11g:如何查询外部文件中的位置?

时间:2014-07-16 18:26:54

标签: oracle oracle11g

如果我在Oracle中创建这样的表:

SQL> CREATE TABLE emp_load
  2    (employee_number      CHAR(5),
  3     employee_dob         CHAR(20),
  4     employee_last_name   CHAR(20),
  5     employee_first_name  CHAR(15),
  6     employee_middle_name CHAR(15),
  7     employee_hire_date   DATE)
  8  ORGANIZATION EXTERNAL
  9    (TYPE ORACLE_LOADER
 10     DEFAULT DIRECTORY def_dir1
 11     ACCESS PARAMETERS
 12       (RECORDS DELIMITED BY NEWLINE
 13        FIELDS (employee_number      CHAR(2),
 14                employee_dob         CHAR(20),
 15                employee_last_name   CHAR(18),
 16                employee_first_name  CHAR(11),
 17                employee_middle_name CHAR(11),
 18                employee_hire_date   CHAR(10) date_format DATE mask "mm/dd/yyyy"
 19               )
 20       )
 21     LOCATION ('info.dat')
 22    );

 Table created.

我需要查询和更新部件中使用的文件

LOCATION('info.dat')

我想把文件名改为:

select LOCATION from <something>.emp_load;

收到错误:

Error at line 1
ORA-00904: "LOCATION": invalid identifier

进行此查询的正确方法是什么?

提前致谢

2 个答案:

答案 0 :(得分:3)

您可以从the all_directories view:

获取该文件的操作系统路径
select directory_path
from all_directories
where directory_name = 'DEF_DIR1';

你的档案将在那里。

如果要查找表的目录及其他相关信息,可以从the all_external_tables view获取。

如果要查找目录和位置,可以从the all_external_locations view

中找到该目录
select directory_name, location
from all_external_locations
where table_name = 'EMP_LOAD';

如果您在不同的模式中有重复项,则可能需要为任何这些查询指定所有者;或者,如果您拥有该表,则查询user_*视图。

答案 1 :(得分:0)

它的工作方式:

select * from all_external_locations where table_name='<table name>' and owner='<owner>';