使用UTL_FILE从服务器删除文件.在不知道文件名的情况下删除



我是一名报告分析师,我被要求学习一些PL/SQL来自动化一些流程。所以我差不多完成了,只差一步。我有一个包

  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中看起来如何?

如果我没有提供足够的信息,请告诉我!

非常感谢!

这可以用来清除Oracle目录中的多个文件
begin for i in (select filename from (select * from table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DIR_NAME')) order by mtime) where filename like 'backup%') loop UTL_FILE.FREMOVE ('DIR_NAME', i.filename ); end loop; end; /

旧帖但…

您可以创建一个外部表列出目录文件的内容。然后可以编写一个循环从外部表中获取文件名,并执行utl_file.fremove

您可以使用预处理器运行shell脚本来删除文件。

如何使用Oracle调度器调度此脚本:

 begin
    for i in (select filename from (select * from 
    table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DIR_NAME')) order by mtime) where filename like 
    'backup%')
    loop
    UTL_FILE.FREMOVE ('DIR_NAME', i.filename );
    end loop;
    end;
    /

相关内容

最新更新