oracle有没有类似这样的功能?

stonec 2009-11-01 08:03:03
oracle有没有类似这样的功能,主要想实现:

能够定时读取远程或本地的某个文件夹下的文件(假设这些文件按一定的机制存放和命名,比如说“A部门-200910-User1”,“X部门-200910-Usern”),并且将其中的数据(比如说xls或者xml)导入到数据库的某些表中。

这个可以实现吗?有什么思路和方法?
如果不能用oracle,一般如何实现。
...全文
121 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqlife 2009-11-02
  • 打赏
  • 举报
回复
没有用过
都是在顶层实现
学习了
zhangwonderful 2009-11-01
  • 打赏
  • 举报
回复
需要分步骤实现:1、建立存放xml文件目录 ;2、分配用户对xml文件目录访问权限;3、建立存储过程;4、建立job
1、建立存放xml文件目录
create or replace directory xml_path as 'd:\myxmlfiles';
2、分配用户scott对xml文件目录访问权限
grant read, write on directory xml_path to scott;
3、建立存储过程
CREATE OR REPLACE PROCEDURE addPerson()
IS
--//XML解析器
xmlPar XMLPARSER.parser := XMLPARSER.NEWPARSER;
file_path VARCHAR2;--xml存放路径
log_path VARCHAR2;--日志存放路径
--//DOM文档对象
doc xmldom.DOMDocument;
len integer;
personNodes xmldom.DOMNodeList;
chilNodes xmldom.DOMNodeList;
tempNode xmldom.DOMNode;
tempArrMap xmldom.DOMNamedNodeMap;
--================================
--以下变量用于获取XML节点的值
pid varchar2(4);
name varchar2(50);
address varchar2(200);
tel varchar2(20);
fax varchar2(20);
email varchar(100);
tmp integer;
--================================
BEGIN
file_path:='d:\xml_path\myxml.xml';
log_path:='d:\xml_path\mylog.txt';
xmlPar := xmlparser.newParser;
xmlparser.setErrorLog( xmlPar, log_path);
xmlparser.parse(xmlPar, file_path);
doc := xmlparser.getDocument( xmlPar );
-- 释放解析器实例
xmlparser.freeParser(xmlPar);
-- 获取所有PERSON元素
personNodes := xmldom.getElementsByTagName( doc, 'PERSON' );
len := xmldom.getLength( personNodes );
--遍历所有PERSON元素
FOR i in 0..len-1
LOOP
--获取第i个PERSON
tempNode := xmldom.item( personNodes, i );
--所有属性
tempArrMap := xmldom.getAttributes(tempNode);
--获取PERSONID的值
pid := xmldom.getNodeValue(xmldom.getNamedItem(tempArrMap,'NODEID'));
--获取子元素的值
chilNodes := xmldom.getChildNodes(tempNode);
tmp := xmldom.GETLENGTH( chilNodes );
name := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 0 )));
address := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 1 )));
tel := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 2 )));
fax := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 3 )));
email := xmldom.getNodeValue(xmldom.getFirstChild(xmldom.item( chilNodes, 4 )));
--数据库处理
---INSERT INTO PEOPLE VALUES (pid,name,address,tel,fax,email);
COMMIT;
END LOOP;
-- 释放文档对象
xmldom.freeDocument(doc);
EXCEPTION
WHEN OTHERS THEN
DBMS_output.PUT_LINE(SQLERRM);
END addPerson;

4、建立job调用存储过程处理xml文件(每隔30秒处理一次)
--创建job
SYS.DBMS_JOB.SUBMIT(NJOB,
'addPerson();',
sysdate,
'sysdate + 30/(24*3600)');
shiyiwan 2009-11-01
  • 打赏
  • 举报
回复
dbms_job可以定时,你查下oracle job
dbms_xml和dbms_file是oracle处理文件的两个包
stonec 2009-11-01
  • 打赏
  • 举报
回复
楼上,能说通俗一点吗?oracle才刚开始学
shiyiwan 2009-11-01
  • 打赏
  • 举报
回复
dbms_job
dbms_xml
dbms_file
  数据库操作是软件行业人员必备的技能,这门视频教学课程主要是针对从事软件技术的新人的,适合在校大学生、准备转行到IT行业的新人、软件公司新入职员工。这门课程主要涉及Oracle数据库的基础操作和SQL语法,因为绝大部分软件技术人员掌握这些就可以了,数据库的大部分功能,我们平时是用不到的,所以不用花太多时间去研究。把这门课程里面的内容学会,足以胜任日常性数据库相关的工作。  这门视频教学课程不是针对DBA的培训课程,从事DBA工作的人在软件行业人员的占比不高,就业面不太广,有做DBA志向的同学可以到专门的培训机构学习Oracle的OCA、OCP、OCM课程,他们有针对应试的培训内容,他们也可以安排相应的考试,考试通过后会有相应的证书,这门课程更偏向编程应用,不是面向Oracle认证考试的。   我对Oracle数据库有十几年的使用经验,我们公司的数据库是Oracle数据库,基本上每天的编程工作都要写SQL语句,公司的历史数据比较多,需要通过编写SQL语句来进行查询处理,有两年时间,我的工作就是编写Oracle数据库的存储过程。  这个视频教学课程使用Oracle 19c版本的数据库进行讲解。每节课程都结合工作实际,都是干货,都经过认真准备,相信可以给大家带来很大帮助。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧