利用oracle自带的utl_file包可以访问磁盘文件,但有个限制--
无法访问文件夹?什么意思呢?就是说oracle只能访问指定的文件,而不能访问文件夹下的未知文件。所以,如果要通过oracle去遍历某指定路径下的
所有文件,sorry, impossible! 但是,有一种替代方案可以助你一臂之力!
众所周知java之File类指向的可以是目录也可以是文件,如果指向目录,可以用file.list()找到包含的文件及目录,so
that,我可以用java来遍历文件,然后返回一个值给oracle再进行后续操作。
Come on, let's talk about this case!
oracle调用java可以分三个步骤:
第一步:在PLSQL客户端里写java代码(类及方法),实现oracle无法做的工作或你想要让java做的工作;
-
--功能:返回所有文件字段串
-
create or replace and compile java source named file_list as
-
import
java.io.File;
-
public
class
file_list
-
{
-
public
static
String entry(String path)
-
{
-
StringBuffer resultBuffer = new
StringBuffer();
-
try
{
-
File file = new
File(
"I:\\"
+path);
-
resultBuffer.append(file.getAbsolutePath());
-
String[] files = file.list();
-
-
resultBuffer.append("----"
);
-
for
(
int
i=
0
; i<files.length; i++){
-
StringBuffer fileStr = new
StringBuffer(
"<P align='center'><IMG src="
http:
-
fileStr.append(path.replace(" mce_src="
http:
-
fileStr.append(path.replace("\\', '
/'));
-
fileStr.append(files[i]);
-
fileStr.append("'></P>"
);
-
resultBuffer.append(fileStr.toString());
-
}
-
}catch
(Exception ex){
-
resultBuffer.append("----"
);
-
resultBuffer.append(ex);
-
}
-
return
resultBuffer.toString();
-
}
-
}
第二步:写oracle函数(function),调用java类方法;
-
create or replace function func_file_list(path in varchar2)
return
varchar2 as
-
language java name 'file_list.entry(java.lang.String) return java.lang.String'
;
第三步:写oracle存储过程(procedure)或客户端调用程序;
-
create or replace procedure proce_transfer_data as
-
url varchar2(100
);
-
path varchar2(100
);
-
img_url varchar2(2000
);
-
--档案公布带图数据
-
cursor cur1 is
-
select * from ARCHIVE_PUBLICATION t where t.big_event_id is null
and t.appendix_numb >
0
and t.publish_order is not
null
;
-
r1 ARCHIVE_PUBLICATION%rowtype;
-
begin
-
open cur1;
-
loop
-
fetch cur1 into r1;
-
exit when cur1%notfound;
-
--找出重复的数据
-
-
--图片目录
-
if
r1.publish_order is
null
then
-
path := 'archives_files\' || substr(r1.archive_no, 1, 5) || '
\
' || substr(r1.archive_no, 6, 3) || '
\' ||
-
substr(r1.archive_no, 9
,
5
)||
'\' || substr(r1.archive_no, 14, 4) || '
\';
-
else
-
path := 'archives_files\ziliao\' || r1.publish_order || '
\';
-
end if
;
-
--dbms_output.put_line(path);
-
--授权
-
dbms_java.grant_permission( 'QDDA'
,
'SYS:java.io.FilePermission'
,
'I:\archives_files\', '
READ' );
-
-
--图片路径
-
img_url := func_file_list(path);
-
dbms_output.put_line(r1.id || img_url);
-
-
update subject_articles t set t.content = img_url || r1.content||','
||r1.file_dz||
','
||r1.archive_no||
','
||r1.file_no,
-
t.secondid = '12466747755782031001'
, t.rootid=
'12264731996871389001'
, t.area =
'qd'
-
where t.id = r1.id;
-
commit ;
-
end loop;
-
-
close cur1;
-
commit;
-
-
end proce_transfer_data;
分享到:
相关推荐
3. **磁盘空间检查**:Java的`java.io.File`类提供了获取文件或目录大小的方法,通过遍历各个磁盘分区,可以得到磁盘的总空间、已用空间和剩余空间。 4. **网络连接状态**:Java的`java.net`包提供了`Socket`和`...
4. **清理过期备份文件**:脚本还包含了一个循环结构,用于遍历备份目录中的所有文件,根据设定的保留天数(`iDays`)删除超过该期限的旧备份文件,以释放磁盘空间,保持备份目录的整洁和高效。 #### 关键知识点...
4. 参数文件:定义数据库的各种配置参数,如内存结构大小、磁盘空间等。 5. 实例:由Oracle进程和SGA(System Global Area)组成,负责处理数据库的内存管理和I/O操作。 二、Oracle编程艺术 Oracle编程艺术涵盖了...
本教程将指导新手如何使用C#和.NET框架,结合Npoi库从Oracle数据库中读取数据并将其导出到Excel文件。首先,你需要确保已经在项目中引用了Npoi库。你可以通过NuGet包管理器来安装Npoi,输入命令`Install-Package ...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(后被Oracle收购)于1995年推出。它以其“一次编写,到处运行”的特性而闻名,因为Java程序可以在任何安装了Java虚拟机(JVM)的平台上运行。这使得...
5. Oracle的主要文件类型: - 数据文件:存储表、索引等数据库对象。 - 日志文件:记录数据库的所有更改。 - 控制文件:跟踪数据库状态,用于恢复和备份。 6. Oracle数据库优化: - 物理优化:包括硬件选择、...
用户可以从Oracle官网下载Berkeley DB Java Edition,并将其jar文件添加到Java环境类路径中。随包附带的帮助文档和源代码可供进一步学习和参考。 **常见的JE异常**: - `DatabaseNotFoundException`:当尝试访问未...
Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。它的设计目标是具有高级功能、简单性、健壮性、安全性、可移植性、高性能和多线程特性。在“哈工大java 课件...
安装Oracle需要规划合理的服务器硬件配置,包括内存、磁盘空间和CPU资源。安装过程中,需要选择正确的版本(如企业版、标准版等),并进行数据库实例创建、监听配置、网络服务命名等步骤。此外,还要设置环境变量,...
1. **使用SQL*Loader工具**:这是一种批处理工具,可以从外部文件中批量加载数据到Oracle表中。它支持多种数据格式,并能够处理复杂的转换规则。 2. **使用PL/SQL或外部编程语言(如C#、Java等)**:通过编程接口...
实例157 动态调用类中的方法 204 实例158 动态实例化类 205 实例159 创建长度可变的数组 206 实例160 利用反射重写toString()方法 208 实例161 反射与动态代理 209 7.3 常见的未检查型异常 210 实例162 算数异常 210...
Java必备知识点大全的内容非常丰富,涵盖了Java语言的基础知识、常用的框架以及数据库的应用等方面,是每一个Java开发者学习和面试时的重要参考。下面是对文档中各个知识点的详细解析。 基础篇: JDK常用的包:Java...
Oracle的编程语言,扩展了SQL的功能,允许编写流程控制语句、处理异常、调用存储过程等。 - **块(Block)**:PL/SQL的基本结构,包括声明部分、执行部分和异常处理部分。 - **变量(Variable)**:用于存储数据...
JDK 1.7.0.80是Oracle公司发布的一个特定版本,它包含了Java编译器、Java运行环境、调试工具和其他必要的库,使得开发者可以在无需正式安装过程的情况下进行Java开发。 ### JDK 1.7 版本特性 1. **类型推断**:...
数据库则是集中存储数据的地方,通常存储在磁盘文件中。使用数据库的好处包括数据共享、存储效率高和数据安全。常见的数据库厂商有大型企业级的Oracle和中小企业常用的MySQL。 MySQL社区版本的安装过程包括下载安装...
4. **单文件数据库**:整个数据库存储在一个单独的磁盘文件中,易于备份和迁移。 5. **大文件支持**:数据库文件最大可达2TB。 6. **高性能**:对于大多数常用操作而言,SQLite的表现甚至优于一些客户端/服务器...
在阅读《Oracle PL/SQL by Example(4th Edition)》的PDF文件时,建议按照章节顺序逐步学习,同时动手实践书中的示例,这将极大地促进对PL/SQL语言的理解和应用。此外,结合实际的Oracle数据库环境进行练习,能更好地...