我刚刚通过链接using input from a text file for WHERE clause来查询带有输入文件的表。
但它不适用于Oracle DB 11g。有没有办法在Where子句中使用文件输入查询OIM表。
答案 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:\
当然不是一个好主意,你通常会有一个专用的目录。