`
jiasongmao
  • 浏览: 670567 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

oracle操作xml笔记二

阅读更多

使用 XML

将数据添加到 XMLType 表和列中。 正如您可能预期到的,有很多选项可供我们将 XML 数据添加到数据库中。可以使用 SQL、PL/SQL、Java 和 C 程序插入数据。也可以使用 XMLType 表的 SQL*Loader 和 Import/Export 函数将数据加载到数据库中。可以使用 Oracle Streams 来移动 XML 数据,还可以使用 DBMS_XDB 函数。现在,就让我们来探究一个简单易用的方式来加载 XML 数据。

在本例中,我们将使用 SQL 插入将一个 XML 文档从文件加载到表中,以便从 bfile 加载该 XML 文档。该文件需要通过一个数据库目录访问。为此,我们将创建一个目录以指向存储该 XML 文档文件的文件。请注意,要执行本文中的示例,您必须确保所用用户具有 xdbadmin 角色。

create or replace directory xmldir as '/u01/app/oracle/admin/db01/sql';

现在我们可以用两种方式创建包含 XMLType 数据的表。第一个将是具有 XMLType 列的表。第二个将是定义为类型 XMLType 的表。

1. 创建一个包含 XML 列的表。

create table invoiceXML_col (
inv_id number primary key,
inv_doc XMLType); 

2. 创建一个 XML 表。

create table invoiceXML_tbl of XMLtype; 

以上每一个语句都在每个表中隐式创建两个索引 — 一个用于主键,另一个用于 LOB。

现在我们要将一个发票文档插入到这两个表中。请注意,我们要使用字符集 AL32UTF8,并指定它传送字符集编码来供要读取的文件使用。数据将插入这两个表以显示这两个 SQL 语句间的相似性。

Insert into invoicexml_col values (1, 
XMLType(bfilename('XMLDIR', 'invoicexml.txt'), 
nls_charset_id('AL32UTF8') )); 

Insert into invoicexml_tbl values 
(XMLType(bfilename('XMLDIR', 'invoicexml.txt'),
 nls_charset_id('AL32UTF8')));

我们现在已经使用 XMLType 表和列将两个 XML 文档加载到了数据库中。就是这么简单。

注册和实现模式类型化数据

如果处理命名空间和存储技术不足,XMLType 数据也可以实现为模式类型化或非类型化数据。XMLSchema 可将文档与提供文档结构和内容信息的 XMLSchema 相关联。这为文档提供了更好的记录、验证和控制。该模式中的信息可用于提交更有效的查询和更新处理。XMLSchema 也允许将 XML 文档存储为结构化存储数据,因为该文档可以通过 XMLSchema 分解为一组对象。用于存储该文档的对象模型由模式定义确定。XMLType 方法 schemaValidate() 和 isSchemaValid() 允许使用模式定义编辑 XMLType 文档。

我们如何创建模式并在 XML 文档中使用它?为此,我们需要创建一个 XMLSchema 定义

  1. 注册该模式
  2. 创建一个基于 XMLSchema 的表
  3. 将数据插入其中

下面的示例分四步进行了说明。

1. 首先,在目录 XML_DIR 下的文件 invoiceformtest.xsd 中创建一个模式定义。该清单如下所示:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:xdb=http://xmlns.oracle.com/xdb version="1.0">
<xs:element name="INVOICEFORMTEST" xdb:defaultTable="INVOICEFORMTEST">
   <xs:complexType>
      <xs:sequence>
         <xs:element name="MailAddressTo">
            <xs:complexType>
               <xs:sequence> 
                  <xs:element name="Person" type="xs:string"/>
                  <xs:element name="Street" type="xs:string"/>
                  <xs:element name="City" type="xs:string"/>
                  <xs:element name="State" type="xs:string"/>
                  <xs:element name="Zipcode" type="xs:string"/>
               </xs:sequence>    
               <xs:attribute name="id" type="xs:string" use="required"/>  
         </xs:element>
      </xs:sequence>
   </xs:complexType>
</xs:element>
</xs:schema>

2. 使用过程 DBMS_XMLSCHEMA.registerSchema 在数据库中注册上面的模式。您用来连接到数据库的用户名需要修改会话权限,以便该模式可以成功注册。

BEGIN
  DBMS_XMLSCHEMA.registerSchema(
    SCHEMAURL => 'http://xmlns.oracle.com/xdb/invoiceformtest.xsd',
    SCHEMADOC => bfilename('XMLDIR','invoiceformtest.xsd'),
    CSID => nls_charset_id('AL32UTF8'));
END;
/

要删除该模式,只需运行 DBMS_XMLSCHEMA.deleteSchema 语句,如下所示:

BEGIN
  DBMS_XMLSCHEMA.deleteSchema(
  SCHEMAURL => 'http://xmlns.oracle.com/xdb/invoiceformtest.xsd',
  DELETE_OPTION => dbms_xmlschema.DELETE_CASCADE_FORCE);
END;
/

3. 由于上面模式定义中的 xdb:defaultTable="INVOICEFORMTEST" 语句,以上语句还创建了表 invoiceformtest。没有它,将创建一个生成的名称(您不想使用该名称)。

4. 现在,我们准备将文档输入到 XML 文档内基于 XMLSchema 的表中,该文档存储在 XML_DIR 中并使用实现的模式指定的格式。

Insert into invoiceformtest values 
(XMLType(bfilename('XMLDIR', 'invoiceformtest.txt'),
 nls_charset_id(' AL32UTF8')));

来看一下我们刚刚使用 XML 文档上的 object_value pseudocolumn 创建的内容。

SQL> select object_value from invoiceformtest;

OBJECT_VALUE

<INVOICEFORMTEST>
     <MailAddressTo id="1">
            <Person>Joe Smith</Person>
            <Street>10 Apple Tree Lane</Street>
            <City>New York</City>
            <State>NY</State>
            <Zipcode>12345</Zipcode>
     </MailAddressTo>
</INVOICEFORMTEST>

完成!

分享到:
评论

相关推荐

    达内corejava+Oracle+JDBC+XML笔记

    "达内corejava+Oracle+JDBC+XML笔记"这份资料涵盖了Java开发的核心部分,对于初学者或者希望巩固基础的开发者来说,是一份宝贵的资源。CoreJava笔记可能包括了类和对象的创建、继承、封装、多态等OOP原则,以及集合...

    oracle培训笔记2

    在"Oracle培训笔记2"中,我们可以看到一系列的课程涵盖了XML基础和多行函数的应用,这些都是Oracle数据库管理和开发中的关键知识点。 XML(可扩展标记语言)在Oracle中的应用非常广泛,特别是在数据交换和存储非...

    oracle ocp老外笔记

    7. **XML支持**:Oracle 9i对XML的处理能力得到提升,内置了XML DB,可以直接存储和查询XML文档,提高了数据交换和集成的能力。 8. **数据整合**:通过Advanced Queuing(AQ)和Materialized Views,9i提供了强大的...

    ORACLE笔记笔记_ZCY

    10. **XML支持**:Oracle内建对XML的支持,允许XML文档直接存储在数据库中,并提供了XML DB组件进行处理。 浪曦视频教程可能涵盖了这些基础概念以及更高级的主题,如数据库设计、SQL查询优化、数据库性能调优、备份...

    Oracle9i备课笔记——吕海东

    Oracle9i备课笔记——吕海东 第1讲 Oracle9i简介 目的: 1. 了解数据库的发展,关系数据库的基本原理。 2. 了解目前市场上流行的数据库产品及特点 3. 了解Oracle数据库的发展 4. 掌握Oracle9i产品系列 5. 掌握Oracle...

    Oracle初学者笔记

    ### Oracle初学者笔记知识点解析 #### 一、Oracle网络通信机制与安全性 **1.1 Net8协议** - **概述**: Oracle使用Net8协议在客户端和服务器之间进行数据传输。 - **加密与解密**: 该协议支持加密功能,确保数据在...

    oracle培训公司笔记1

    - **XML集成**:Oracle支持XML技术,可以方便地进行数据交换和处理。 - **JSP/Servlet**:Java Server Pages 和 Servlets 是J2EE中的关键技术,用于构建动态网页。 - **EJB**:Enterprise JavaBeans 是一种组件模型...

    oracle 笔记.doc

    在Oracle笔记中,我们首先看到关于安装和删除Oracle数据库的部分,特别是Oracle 9i的9.0.1.1和9.2.1.1版本。在这个过程中,有两位重要的超级用户:sys和system。sys类似于SQL Server的sa账户,拥有最高权限,而...

    ORACLE_ODI笔记

    5. **导入知识模块**:知识模块是ODI的关键,它们包含了特定操作的逻辑,通常位于安装目录下的xml-reference文件夹。 6. **新建模型**:模型定义了数据的逻辑结构,可以逆向工程从数据库中生成模型。 7. **新建接口*...

    tarena达内大部分笔记(xml,struts,spring,hibernate,oracle,jsp,jdbc,corejava,servlet)

    内容很多,包含达内大部分笔记,如果你感到哪里不足,请留言,我继续补充。 目录如下 ├─xml ├─struts ├─spring │ ├─spring-note │ └─spring-day2PM │ ├─exec │ ├─aop3 │ ├─aop2 │ └─aop1 ├...

    XML笔记(个人总结)

    通过DOM可以将XML文档视为树状结构,便于操作。 #### 14. SAX (Simple API for XML) SAX提供了一种基于事件驱动的方式来解析XML文档,适用于大文档。 #### 15. XPath XPath是一种在XML文档中查找信息的语言,它...

    XML高级编程学习笔记

    许多数据库系统如Oracle、IBM DB2、Microsoft SQL Server等都支持XML存储和查询。WS*(Web Services*)是一系列标准,包括WSDL(Web Services Description Language)定义服务接口,UDDI(Universal Description, ...

    oracle课堂笔记

    根据提供的信息,我们可以总结出这份“Oracle课堂笔记”主要涵盖了Oracle数据库的基础知识、安装过程以及SQL语言的基本操作。下面将详细解析这些知识点。 ### Oracle基础知识 #### Oracle简介 Oracle是一种关系型...

    oracle学习笔记

    课程 java语言 java基本编程 -&gt; j2EE编程 数据库的能力 sqlserver -&gt; ORACLE 数据结构 训练编程思维方式 实际问题到计算机问题的转化 ... j2EE + XML + ORACLE/SQLSERVER 基础 java html javascript sql

    oracle笔记

    2. **SQL*Plus**:作为Oracle的命令行工具,SQL*Plus用于执行SQL查询、DML(数据操纵语言)操作、DDL(数据定义语言)操作,以及PL/SQL块。它是理解Oracle数据库操作的基础。 3. **表和索引**:在Oracle中,数据...

    OracleEBS-WebService开发笔记.pdf

    ### OracleEBS-WebService开发笔记知识点总结 #### 一、概述 **OracleEBS-WebService开发笔记** 是一份详尽的文档,旨在介绍如何利用 WebService 技术进行 Oracle E-Business Suite (EBS) 的集成开发。该文档由 ...

    activiti 5.8 oracle10g demo安装笔记

    1、activiti 5.8 oracle10g demo安装笔记.txt 2、关键配置文件附件: build.db.properties build.properties build.xml oracle.data.sql

    corejava oracle jdk5.0 xml 学习2个月之资料

    这个是我在学习corejava oracle jdk5.0 xml 时候整理出来的笔记,内有各项实验源代码,稍微有几个故意错误的地方,大家学习的同时望找出来哦~

    oracle培训18天老师笔记

    - Oracle支持多种数据类型,如NUMBER(数值)、VARCHAR2(可变字符)、CHAR(固定长度字符)、DATE(日期时间)、CLOB(大对象——字符)、BLOB(大对象——二进制)等。 4. **表的创建与操作**: - 使用CREATE ...

Global site tag (gtag.js) - Google Analytics