利用Oracle DBMS_SCHEDULER调用shell脚本文件
2016-12-28 08:53
369 查看
今天在itpub上看到个帖子,大意是使用shell脚本取文件列表,和数据库中一个表中记录的文件名相比较,没有的插入到表里去。
地址:http://www.itpub.net/thread-1186639-1-1.html
实验代码如下:
-- 建立目录
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;
地址: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;
相关文章推荐
- 使用dbms_scheduler调用shell脚本
- Oracle Scheduler(二)——Jobs(调用shell脚本)!
- 利用oracle dbms_scheduler执行windows的bat脚本加载数据
- 利用shell脚本对大文件进行分割 (
- shell脚本中调用vim 替换指定路径下文件中的字符串
- Shell中调用、引用、包含另一个脚本文件的三种方法
- 在Windows、Linux下,分别利用BAT批处理文件和Shell脚本,生成类似“20150605_111327.txt”命名的文件
- Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
- 利用shell脚本将重要文件备份至远程FTP服务器
- java调用windows系统的批处理(.bat文件) 和 linux系统的shell脚本(.sh文件)
- Shell中调用/引用/包含另外的脚本文件的两种方法
- Shell中调用、引用、包含另一个脚本文件的三种方法
- Shell脚本中调用、引用、包含另外一个脚本文件的两种方法
- 【转载】利用shell脚本获取一个文件的绝对路径readlink
- 利用SHELL脚本实现文件完整性检测程序(1.2版更新)
- 利用shell脚本监控目录内文件改动
- 利用shell脚本对大文件进行分割
- Oracle:Jobs-DBMS_SCHEDULER的使用方法及脚本.
- 利用Shell脚本清除UT编译的临时文件
- Shell脚本中调用、引用、包含另外一个脚本文件的两种方法