CREATE TABLE LOG_FILES (
LOG_DTM VARCHAR(18),
LOG_TXT VARCHAR(300)
)
ORGANIZATION EXTERNAL(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY LOG_DIR
ACCESS PARAMETERS(
RECORDS DELIMITED BY NEWLINE
FIELDS(
LOG_DTM position(1:18),
LOG_TXT position(19:300)
)
)
LOCATION('logadm'))
)
REJECT LIMIT UNLIMITED
/
LOG_DIR是一个指向/u/logs/
但问题是/u/logs/
的内容看起来像这样
logadm_12012012.log
logadm_13012012.log
logadm_14012012.log
logadm_15012012.log
有没有办法可以动态指定文件的位置?即每次运行Select * from LOG_FILES
时,它都应该使用当天的日志文件。 (例如log_adm_DDMMYYYYY)。
我知道我可以使用alter table log_files location ('logadm_15012012.log')
但我不想发出alter命令。
还有其他可能性吗?
由于
答案 0 :(得分:6)
你跑10g真是太遗憾了。在11g上,我们可以将预处理器脚本(shell脚本)与外部表相关联。在您的情况下,您可以运行一个脚本,该脚本将找出最新文件,然后发出复制命令。类似的东西:
cp logadm_15012012.log logadm
Adrian Billington在博客上发表了关于this feature here的文章。坦率地说,他的写作比the official docs更有帮助。
但是,当您使用10g时,您可以执行的是运行ALTER TABLE语句,或使用预定作业(cron
或其他)来同步新文件与通用名称。