oracle XML DB的使用

Oracle XML DB 是Oracle数据库内置的XML存储和检索技术,结合了关系数据库和XML的优势。本文介绍了如何验证XML DB的安装,以及通过XMLType存储、查询、更新XML文档的方法,包括使用XPath和相关函数进行数据操作。
摘要由CSDN通过智能技术生成

 XML DB简介

Oracle XML DB 是一组专门为 XML 开发的内置高性能存储和检索技术,首次随 Oracle9i 数据库第 2 版推出。OracleXML DB 将 World Wide Web Consortium (W3C) XML 数据模型完全吸收到 Oracle9i 数据库中,并为导航和查询 XML 提供了新的标准访问方法。可以同时获得关系数据库技术和 XML 技术的所有优势。Oracle XML DB 可用于存储、查询、更新、转换或处理 XML,并使用 SQL 查询访问相同的XML 数据。

验证是否安装了 XML DB

运行SQL:select comp_name from dba_registry where comp_name like '%XML%';若返回的数据为:COMP_NAME/Oracle XML Database 则证明已经安装XML DB

接下来可以进行XMLDB的操作了

向XMLType或者XMLType column数据表中存放数据

当需要要向Oracle9i数据库中存储XML文档时,可以采取如下的这些方法,包括:

  1.在Oracle9i数据库外部将XML文档进行解析,将分析所得到的结果以行的形式存入一个或者多个表中。在这种场景下,数据库不知道正在处理的是XML格式的内容。

   2.将XML文档存储在Oracle9i数据库的CLOB或者VARCHAR2字段。这种场景下数据库仍然无法知道正在处理XML文档。但是用户可以使用XDK编写程序来执行XML操作。

   3.把XML文档作为XMLType数据类型存储在Oracle9i数据库中。

             使用以下两种方式都是有效的:

                        将XML文档存储在XMLType数据列中。

                        将XML文档存储在XMLType数据表中。

       采用以上两种方式存储就意味着数据库能够知道正在处理的数据是XML文档,使用这种方法来存放XML文档将给我们带来很大的方便,因为Oracle9i数据库中提供了一系列的新特性,这使得对XML数据进行高效的处理变成了可能。

创建一个带 XMLType 数据列的表

CREATE TABLE XMLCONTENT(    
           KEYVALUE  varchar2(10)  primary key,    
           XMLCOLUMN SYS.xmltype
);   


创建一个XMLType表 

CREATE TABLE XMLTABLE OF XMLType;


将XML文档转化XMLType实例,然后存储到XMLType表或者带XMLType数据列的表中 

grant create any directory to xdb;
conn xdb/xdb
create directory XMLDIR as 'C:"oracle"XMLDB';
create or replace function getClobDocument(filename in varchar2,charset in varchar2 default NULL)
   return CLOB deterministic
is
    file            bfile := bfilename('XMLDIR',filename);
    charContent     CLOB := ' ';
    targetFile      bfile;
    lang_ctx        number := DBMS_LOB.default_lang_ctx;
    charset_id      number := 0;
    src_offset      number := 1 ;
    dst_offset      number := 1 ;
    warning         number;
begin
   if charset is not null then
      charset_id := NLS_CHARSET_ID(charset);
   end if;
   targetFile := file;
   DBMS_LOB.fileopen(targetFile, DBMS_LOB.file_readonly);
   DBMS_LOB.LOADCLOBFROMFILE(charContent, targetFile,DBMS_LOB.getLength(targetFile), src_offset, dst_offset,charset_id, lang_ctx,warning);
   DBMS_LOB.fileclose(targetFile);
   return charContent;
end;
/
-- create XMLDIR directory-- connect system/manager-- create directory XMLDIR as '<location_of_xmlfiles_on_server>';
-- grant read on directory xmldir to public with grant option; 
-- you can use getCLOBDocument() to generate a CLOB from a file containing
-- an XML document. For example, the following statement inserts a row into the 
-- XMLType table Example2 created earlier:

创建函数后即可使用此函数进行数据导入,可以看出我们把路径设置在C盘,此时只需将需导入的文件放在C盘即可,然后运行以下方法即可

INSERT INTO XMLTABLE VALUES(XMLTYPE(getCLOBDocument('test.xml')));

注意Charset参数的使用,它用来确定指定文件的字符集,如果该参数被忽略,将默认采用当前数据库所采用的字符集,例如在文档test.xml中使用的UTF-8,它可以被装载到XMLType数据表XMLTABLE数据表中:

insert into xmltable  values(xmltype(getClobDocument('test.xml','UTF-8')));

如果不使用Charset参数将默认使用ZHS16GBK.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值