Oracle SQL将位置中的文件名另存为外部表中的列
我有几个输入文件被读取到Oracle的外部表中。我想在所有文件的内容中运行一些查询,但是,在有些查询中,我希望根据数据来自的输入文件对数据进行过滤。是否有方法在select语句中针对外部表访问源文件的名称,或以某种方式在外部表中创建包含源位置的列 以下是一个例子:Oracle SQL将位置中的文件名另存为外部表中的列,oracle,file,external-tables,Oracle,File,External Tables,我有几个输入文件被读取到Oracle的外部表中。我想在所有文件的内容中运行一些查询,但是,在有些查询中,我希望根据数据来自的输入文件对数据进行过滤。是否有方法在select语句中针对外部表访问源文件的名称,或以某种方式在外部表中创建包含源位置的列 以下是一个例子: CREATE TABLE MY_TABLE ( first_name CHAR(100 BYTES) last_name CHAR(100 BYTES) ) OR
CREATE TABLE MY_TABLE (
first_name CHAR(100 BYTES)
last_name CHAR(100 BYTES)
)
ORGANIZATION EXTERNAL
TYPE ORACLE_LOADER
DEFAULT DIRECTORY TMP
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
SKIP 1
badfile 'my_table.bad'
discardfile 'my_table.dsc'
LOGFILE 'my_table.log'
FIELDS terminated BY 0x'09' optionally enclosed BY '"' LRTRIM missing field VALUES are NULL
(
first_name char(100),
last_name
)
)
LOCATION ( TMP:'file1.txt','file2.txt')
)
REJECT LIMIT 100;
select distinct last_name
from MY_TABLE
where location like 'file2.txt' -- This is the part I don't know how to code
有什么建议吗
始终可以选择将文件名作为附加列添加到输入文件本身。理想情况下,我希望避免这种情况。数据字典视图包含有关外部表位置的信息。还有DBA和用户版本
编辑:(如果我仔细阅读问题,会有所帮助。)
您不仅想读取外部表的位置,还想知道哪一行来自哪个文件。基本上,您需要:
是一篇asktom文章,详细解释了这一点。
更改表MY_表位置('file2.txt')
,然后从MY_表中选择不同的姓氏
您必须每次更改文件名(如果在10g上)。