Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Oracle外部表-指定动态文件名_Database_Oracle_Logging_Plsql_Oracle10g - Fatal编程技术网

Database Oracle外部表-指定动态文件名

Database Oracle外部表-指定动态文件名,database,oracle,logging,plsql,oracle10g,Database,Oracle,Logging,Plsql,Oracle10g,LOG\u DIR是一个oracle目录,指向/u/logs/ 但问题是/u/logs/的内容如下所示 CREATE TABLE LOG_FILES ( LOG_DTM VARCHAR(18), LOG_TXT VARCHAR(300) ) ORGANIZATION EXTERNAL( TYPE ORACLE_LOADER DEFAULT DIRECTORY LOG_DIR ACCESS PARAMETERS( RECORDS DE

LOG\u DIR是一个oracle目录,指向
/u/logs/

但问题是
/u/logs/
的内容如下所示

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
/
是否有任何方法可以动态指定文件的位置?i、 e.每次我运行
Select*from LOG_FILES
时,它都应该使用当天的日志文件。(例如,log_adm_ddmmyyyy)

我知道我可以使用
alter table log\u files location('logadm\u 15012012.log')
,但我不想发出alter命令

还有其他的可能性吗


谢谢

很遗憾您运行的是10g。在11g上,我们可以将预处理器脚本(shell脚本)与外部表相关联。在您的情况下,您可以运行一个脚本,找出最新的文件,然后发出复制命令。比如:

logadm_12012012.log
logadm_13012012.log
logadm_14012012.log
logadm_15012012.log
阿德里安·比林顿在博客上写过。坦率地说,他的文章比我的文章更有帮助


但是,当您使用10g时,您所能做的就是运行ALTER TABLE语句,或者使用计划作业(
cron
或其他任何内容)将新文件与通用名称同步

谢谢,我已经更新了一个存储过程(使用该表)来更新文件名,因为它每天都在运行。
 cp logadm_15012012.log logadm