您的位置:首页 > 数据库 > Oracle

利用Oracle DBMS_SCHEDULER调用shell脚本文件

2016-12-28 08:53 369 查看
今天在itpub上看到个帖子,大意是使用shell脚本取文件列表,和数据库中一个表中记录的文件名相比较,没有的插入到表里去。

地址:http://www.itpub.net/thread-1186639-1-1.html

实验代码如下:
#建立文件filelist.sh如下:
#!/bin/bash
source ~/.bash_profile
ls -la --full-time | awk '/^-/ {print $6 " " $7 " " $9}' > /home/oracle/filelist.txt
[sql] view plain copy 



-- 建立目录  
CREATE DIRECTORY mydir AS '/home/oracle';  
  
-- 建立测试表  
CREATE TABLE filelist  
(  
   file_name    VARCHAR2 (30),  
   createtime   DATE  
);  
  
-- 调用shell文件  
EXEC DBMS_SCHEDULER.create_job (job_name => 'test', job_type => 'EXECUTABLE', job_action => '/home/oracle/filelist.sh');  
EXEC dbms_scheduler.run_job(job_name => 'test');  
  
-- 建立外部表  
CREATE TABLE external_file (filelist VARCHAR2 (200 CHAR))  
ORGANIZATION EXTERNAL  
   (TYPE ORACLE_LOADER DEFAULT DIRECTORY mydir ACCESS PARAMETERS  
   (  
   RECORDS DELIMITED BY NEWLINE  
   ) LOCATION ('filelist.txt'));  
  
-- 插入数据  
INSERT INTO filelist  
   SELECT SUBSTR (filelist, 31) filename,  
          TO_DATE (SUBSTR (filelist, 1, 19), 'yyyy-mm-dd hh24:mi:ss')  
             createtime  
     FROM external_file  
    WHERE (SUBSTR (filelist, 31),  
           TO_DATE (SUBSTR (filelist, 1, 19), 'yyyy-mm-dd hh24:mi:ss')) NOT IN  
             (SELECT file_name, createtime FROM filelist);  
  
  
COMMIT;  
  
-- 查看结果  
SELECT * FROM filelist;  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: