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

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

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

这个可以实现吗?有什么思路和方法?
如果不能用oracle,一般如何实现。
...全文
128 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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

17,382

社区成员

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

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