2015-09-02 78 views
0

我是一名報告分析師,被要求學習一些PL/SQL以自動執行某些過程。所以我差不多完成了,一步一步阻止。我有一個包使用UTL_FILE.FRemove從服務器上刪除文件而無需知道文件名

  1. 用我寫的查詢加載表。
  2. 將該表的結果導出到服務器上的.txt文件中,同時將current_date添加到文件名上。

我試圖刪除3個文件它將使用通配符,但我不斷收到錯誤,如「vendor_file.ia * TXT沒有定義。」:

  • file_location是我的路

我可以刪除它沒有問題:

utl_file.fremove(file_location,'vendor_file.ia.09.02.2015.txt'); 
    utl_file.fremove(file_location,'vendor_file.il.09.02.2015.txt'); 
    utl_file.fremove(file_location,'vendor_file.sd.09.02.2015.txt'); 

但很明顯,這將不會刪除它時,它得到下個月運行。所以我錯過了一個簡單的通配符來搜索'vendor_file.ia。*',而且語法看起來像Oracle嗎?

如果我沒有提供足夠的信息,請讓我知道!

非常感謝!

+1

您必須知道確切的文件名才能調用fremove。你不能傳遞通配符。如果你不介意一些hackery(特別是依靠'x $'表),你可以使用'dbms_backup_restore'來列出目錄中的文件https://davidalejomarcos.wordpress.com/2011/09/13/how-to -list-files-on-a-directory-from-oracle-database /或者您可以使用Java存儲過程https://asktom.oracle.com/pls/apex/f?p=100:11:0 :: :: P11_QUESTION_ID:439619916584 –

+3

我的解決方案是創建一個包含兩個字段的表1)filename,2)deleted_flag。將文件名寫入該表中,然後在準備刪除文件時查找未標記爲已刪除的文件名並將其刪除,並將該記錄標記爲在表中刪除。 –

+2

@ShaunPeterson - 或者只是一個包含文件名的表格。刪除文件時刪除表中的行。 –

回答

1

舊的帖子,但...

您可以使外部表列出目錄文件的內容。 然後,您可以編寫一個循環以從外部表中獲取文件名並執行utl_file.fremove

相關問題