2012-01-31 23 views
7
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/Oracleの外部表 -

問題を指すoracleディレクトリでダイナミックなファイル名を指定するには、どのような方法があります/u/logs/の内容は、この

logadm_12012012.log 
logadm_13012012.log 
logadm_14012012.log 
logadm_15012012.log 

のように見えるということであるI動的にファイルの場所を指定できますか?つまり、私がSelect * from LOG_FILESを実行するたびに、その日のログファイルを使用する必要があります。 (例:log_adm_DDMMYYYYY)。

私はalter table log_files location ('logadm_15012012.log')を使用することができますが、私は変更コマンドを発行する必要はありません知っている。

他の可能性はありますか?

ありがとうございました

答えて

6

10gを実行しているのは残念です。 11gでは、プリプロセッサスクリプト(シェルスクリプト)を外部テーブルに関連付けることができます。あなたの場合、最新のファイルを把握してからコピーコマンドを発行するスクリプトを実行することができます。次のようなものがあります。

cp logadm_15012012.log logadm 

アドリアンビリングトンは約this feature hereです。率直に言って、彼の書き上げはthe official docsよりも助けになります。

しかし、あなたができるのは、ALTER TABLEステートメントを実行するか、スケジュールされたジョブ(cronまたはそれ以上)を使用して、新しいファイルを一般名と同期させることです。

+0

ありがとう、私は毎日実行されるようにファイル名を更新するために(テーブルを使用する)ストアドプロシージャの1つを更新しました。 – ziggy

関連する問題