ORACLE获取操作系统目录下文件列表
2009-07-06 13:32
471 查看
获取操作系统目录下文件列表
很久之前写了《关于UTL_FILE包体的使用》,那个脚本需要手工维护文件名列表,比较麻烦,后来一直想能否自动读取指定目录下的文件名,然后使用我那个UTL_FILE过程读取文件内容。有试过使用ls 命令进行重定向到日志文件,并配合Linux的定时任务(crontab)来解决,后来由于工作原因停止了测试,最后不了了之。前天看了盖老大的《循序渐进ORACLE》,发现了"9.6 获取操作系统文件列表"一节(P383),颇感意外,欣喜异常。适逢周末,决定小试一把。1.创建临时表
create global temporary table crm.dirlist( filename varchar2(255), filesize number, filedate date) on commit delete rows; / |
2.创建JAVA SOURCE过程
此过程用户访问操作系统目录并读取文件列表.
create or replace and compile java source named DirList as import java.io.*; import java.sql.*; public class DirList { public static void getList(String directory) throws SQLException { File path=new File(directory); String[] fileList=path.list(); String fileName; long fileSize; long fileDate; for (int i=0;i<fileList.length; i++) { fileName=fileList[i]; File fpath=new File(directory+'/'+fileName); fileSize=fpath.length(); fileDate=fpath.lastModified(); #sql{insert into crm.dirlist(filename, filesize, filedate) values(:fileName,:fileSize,to_date('01/01/1970','mm/dd/yyyy')+:fileDate/(24*60*60*1000))}; } } } |
此过程用于调用和执行JAVA存储过程(DirList)
CREATE OR REPLACE PROCEDURE CRM.p_get_dir_list(i_directory IN VARCHAR2) AS LANGUAGE JAVA NAME 'DirList.getList(java.lang.String)'; |
SQL> exec crm.p_get_dir_list('E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户'); begin crm.p_get_dir_list('E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户'); end; ORA-29532: Java 调用被未捕获的 Java 异常错误终止: java.security.AccessControlException: the Permission (java.io.FilePermission E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户 read) has not been granted to CRM. The PL/SQL to grant this is dbms_java.grant_permission( 'CRM', 'SYS:java.io.FilePermission', 'E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户', 'read' ) ORA-06512: 在 "CRM.GET_DIR_LIST", line 1 ORA-06512: 在 line 2 |
SQL> exec dbms_java.grant_permission( 'CRM', 'SYS:java.io.FilePermission', 'E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户', 'read' ); PL/SQL procedure successfully completed SQL> exec dbms_java.grant_permission( 'CRM', 'SYS:java.io.FilePermission', 'E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户/*', 'read' ); PL/SQL procedure successfully completed |
SQL> exec crm.p_get_dir_list('E:/割接/10_Transition_SVN_NEW/1_C网在用提取脚本/2.三户'); PL/SQL procedure successfully completed |
SQL> col FILESIZE for a20 SQL> col FILENAME for a40 SQL> col FILEDATE for a30 SQL> select * from crm.dirlist; FILENAME FILESIZE FILEDATE ------------------------------------------------------ ---------------------------- ------------------------------ .svn 0 2008-11-7 1:55:23 2.1--中间表数据倒换脚本-客户数据.sql 9355 2008-10-9 3:35:34 2.10--中间表数据倒换脚本-客户扩展.sql 5833 2008-10-8 7:02:30 2.2--中间表数据倒换脚本-帐户数据.sql 3993 2008-11-4 3:35:13 2.3--中间表数据倒换脚本-产品.sql 3501 2008-11-7 1:45:41 2.4--中间表数据倒换脚本-商品.sql 12432 2008-11-4 8:26:33 2.5--中间表数据倒换脚本-产品特性.sql 20027 2008-11-4 8:27:35 2.6--中间表数据倒换脚本-商品关联.sql 1827 2008-10-8 7:02:30 2.7--中间表数据倒换脚本-帐务数据.sql 4887 2008-10-13 7:43:28 2.8--中间表数据倒换脚本-商品担保.sql 5775 2008-10-22 2:57:30 2.9--中间表数据倒换脚本-客户联系人.sql 2548 2008-10-9 9:22:12 11 rows selected |
转自http://oradbafans.spaces.live.com/blog/cns!91687AA33391DFED!180.entry
相关文章推荐
- ORACLE获取操作系统(WINDOWS+LINUX)目录下文件列表
- oracle 获取操作系统目录下文件列表
- ORACLE获取操作系统目录下文件列表
- python 获取文件列表(或是目录例表)
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名
- IE获取文件目录下的文件列表及ActiveXObject IE设置
- 获取指定目录及子目录中所有文件列表
- c/c++ 获取目录下文件列表
- 获取ftp服务器文件和目录列表
- php获取指定目录下的所有文件列表
- 获取指定目录下的文件列表
- dos获取目录下文件列表
- Python 获取目录下的文件列表与内容
- C/C++,windows 和 linux 获取目录下文件列表的方法
- oracle 获取系统文件目录
- Linux下获取目录下的文件列表,并按字符串排序
- C语言获取目录下目录&文件列表
- c语言 获取目录文件列表
- c++学习之获取目录下的文件列表
- Android按时间先后顺序获取目录下文件列表