您可以使用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:\ 可能不是一个好主意,您通常会有一个专门用于此的目录。