Oracle DB:使用where子句中的文件进行查询

时间:2014-05-13 07:06:58

标签: oracle oracle11g

我刚刚通过链接using input from a text file for WHERE clause来查询带有输入文件的表。

但它不适用于Oracle DB 11g。有没有办法在Where子句中使用文件输入查询OIM表。

1 个答案:

答案 0 :(得分:1)

您可以使用external table作为查询的一部分来引用平面文件中的数据。

在您链接到的问题的示例中,等价物将类似于:

create table employeenames (first_name varchar2(20))
organization external (
  type oracle_loader
  default directory my_dir
  location ('myfile.txt')
);

然后,如果文件包含名字,您可以找到具有以下名称的所有员工:

select e.employee_id, e.first_name, e.last_name, e.salary 
from employeenames en
join employees e on e.first_name = en.first_name;

如果文件只包含可以提供的单个条目David,那么我正在查看HR架构:

EMPLOYEE_ID FIRST_NAME           LAST_NAME                     SALARY
----------- -------------------- ------------------------- ----------
        165 David                Lee                             6800 
        151 David                Bernstein                       9500 
        105 David                Austin                          4800 

但是该文件必须位于数据库服务器上,并且位于Oracle可以访问的文件系统目录中,并且由指向该文件系统目录的Oracle DIRECTORY对象表示,并且该文件的所有者外部表有权读取。因此,假设这是从SCOTT帐户运行的,您必须以前作为DBA执行此操作:

create or replace directory my_dir as 'c:\';
grant read on directory my_dir to scott;
grant write on directory my_dir to scott;

指向c:\当然不是一个好主意,你通常会有一个专用的目录。