DB29(Viper)快速入门

   2015-06-30 0
正在看的db2教程是:DB2 9(Viper)快速入门。

为了帮助您快速掌握 DB2 自身的 XML 特性,请完成几个普通的任务,比如:

  1. 创建用于管理 XML 数据的数据库对象,包括一个测试数据库、一些示例表和视图。
  2. 使用 INSERT 和 IMPORT 语句将 XML 数据填充到数据库中。
  3. 验证您的 XML 数据。使用 DB2 开发和注册您的 XML 模式,并在导入数据时使用 XMLVALIDATE 选项。
后续文章将包括其他主题,比如使用 SQL 查询、更新和删除 DB2 XML 数据,使用 XQuery 查询 DB2 XML 数据,开发存取 DB2 XML 数据的 Java 应用程序和 Web 组件。
创建数据库对象

让我们先来创建一个单独的 DB2 Unicode 数据库。在 DB2 Viper 中,只有 Unicode 数据库才能同时存储 XML 文档和 SQL 数据的更多传统格式,比如整数、日期/时间、变长字符串,等等。随后,您将在这个数据库中创建对象来管理 XML 和其他类型的数据。

创建测试数据库

为了创建一个新的 DB2 Unicode “测试” 数据库,打开 DB2 命令窗口,发出语句来指定 Unicode 编码集合和支持的区域,如 清单 1:

清单 1. 创建用于存储 XML 数据的数据库



create database test using codeset UTF-8 territory us



一旦创建了 Unicode 数据库,您就不需要发出任何专门的命令或采取任何进一步措施来使 DB2 能够以它自身分层的格式存储 XML 数据,因为您的 DB2 系统已经准备好了。

创建示例表

为了存储 XML 数据,请创建包含一个或多个 XML 列的表。这些表充当文档集合的逻辑容器;在幕后,DB2 实际上使用了不同的存储方案来存储 XML 和非 XML 数据。然而,使用表作为管理各种受支持的数据格式的逻辑对象,简化了管理和应用程序开发问题,特别是当需要在一个单独的查询中集成不同的数据格式时。

您可以对 DB2 表进行定义,使其只包含 XML 列、只包含传统 SQL 类型的列或者同时包含两者。本文对后一种情况进行了建模。清单 2 中的例子连接到 “测试” 数据库,并创建了两个表。第一个是 “items” 表,追踪关于货物的销售情况和顾客对货物的评价信息。第二个表追踪的是关于 “客户” 的信息,包括关于联系信息的数据。注意 “comments” 和 “contactinfo” 是基于新的 DB2 XML 数据类型,而所有其他的列都是基于传统 SQL 数据类型的。

清单 2. 创建用于 XML 数据的表



connect to test;

create table items (

id int primary key not null,

brandname varchar(30),

itemname varchar(30),

sku int,

srp decimal(7,2),

comments xml

);

create table clients(

id int primary key not null,

name varchar(50),

status varchar(10),

contactinfo xml

);



如果您仔细地查看这些表定义例子,您将注意到 “comments” 和 “contactinfo” 列都没有进行 XML 文档内部结构的定义。这是 DB2 的一个重要特性。用户不需要为了存储数据而预定义一个 XML 数据结构(或者,更准确地说是一个 XML 模式)。事实上,DB2 可以在一个单独的列中存储任何格式良好的 XML 文档,这意味着不同模式的 XML 文档 —— 或没有和任何注册的模式关联的文档 —— 都可以存储在相同的 DB2 列中。当我们讨论如何在 DB2 中存储数据时,本文将深入讨论这个特性。

创建视图

您可以随意地在包含 XML 数据的表上创建视图,就像您可以在只包含传统 SQL 数据类型的表上创建视图一样。清单 3 中的例子创建具有 “Gold” 状态的客户的一个视图:

清单 3. 创建一个包含 XML 数据的视图



create view goldview as

select id, name, contactinfo

from clients where status='Gold';



关于索引的一点说明

最后,没有必要在 XML 列上创建专门的索引来提高数据的查询速度。因为这是一篇介绍性文章,而且示例数据很少,所以本文不会涵盖到那个主题。然而,在生产环境中,定义一个适当的索引对实现最佳的性能来说很关键。查看本文结尾部分的 “参考资料”,以助于了解 DB2 的新索引技术。

存储 XML 数据

创建好表之后,现在您就可以用数据填充它们了。您可以通过直接发出 SQL INSERT 语句来完成这项工作,或者通过调用 DB2 IMPORT 工具在后台发出 INSERT 语句。

使用 INSERT 语句

使用 INSERT,您可以直接向 DB2 中填充原始的 XML 数据。如果您已经编写了一个应用程序并在变量中存储了 XML 数据,那么这可能是最容易的方法。但是如果您只是刚开始使用 DB2 Viper,并且不想编写应用程序,那么您可以交互地发出 INSERT 语句(我发现使用 DB2 Command Editor 是很方便的,虽然您也可以使用命令行处理器,如果您更喜欢那么做的话)。

要使用 DB2 Command Editor,请启动 DB2 Control Center。从顶端的下拉菜单 “Tools” 中选择 Command Editor,将出现一个单独的窗口,如 图 1 所示。

图 1. DB2 Command Editor

DB29(Viper)快速入门

在上面的窗格中输入下列语句:

清单 4. 交互地插入 XML 数据



connect to test;

insert into clients values (77, 'John Smith', 'Gold',

xmlparse(document '<addr>111 Main St., Dallas, TX, 00112</addr>'

preserve whitespace)

)



单击左侧的绿色箭头来执行该命令。

注意,联机提供 XML 数据(如 清单 4 所示)需要您调用 XMLPARSE 函数,以把文档从字符值转换成 XML 类型值。本例中的输入文档相当简单 。如果文档很大或者很复杂,把 XML 数据键入到像清单 4 所示的 INSERT 语句中是不切实际的。在大多数情况下,您使用主机变量或者参数标记编写一个应用程序来插入数据。您将发现本文带有一个简要的 Java 代码编写例子。然而,由于这是一个介绍性的教程,所以我们不会详细地讨论应用程序开发主题。相反,我们将讨论使用数据填充 DB2 XML 列的另一种选择 —— 使用 IMPORT 工具。

使用 DB2 IMPORT

[1] [2] [3] 下一篇

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;问题的解
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxE
      哇,时隔两天时间,终于找到这个问题的解决办法,先看问题  这是我最近写的家庭记账本网页版,按顺序输入点击保存,总是弹出添加失败的提示 顺着找原因,把原因锁定在dao层的sql语句上,反复检查,没有找到一点毛病,程序其他地方也没有错误,这让我郁
    02-10
  • ndb的sql语法跟mysql SQL语法不一直的地方
    1,不支持临时表在NDB存储引擎中,不支持临时表;不能创建临时表和改变已经存在的临时表的引擎为NDB;否则报“Table storage engine 'ndbcluster' does notsupport the create option 'TEMPORARY'. ”。2,索引和键的限制(1),创建索引时,列宽不超过3072bytes;(
    02-10
  • 解决JDBC连接MySQL 8时得异常:java.sql.SQLExc
    使用原来基于MySQL 5.1的JDBC代码运行时,报错:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTi
    02-10
  • db2,oracle,mysql ,sqlserver限制返回的行数
    不同数据库限制返回的行数的关键字如下:①db2select * from table fetch first 10 rows only; ②oracleselect * from table where rownum=10; ③mysqlselect * from table limit 10; ④sqlServerselect top 10 * from table;
    02-10
  • Logstash-input-jdbc同步mysql数据到ES - sql_last_value
    Logstash-input-jdbc同步mysql数据到ES - sql_
    问题:使用 Logstash-input-jdbc同步mysql到ES, 当中使用了 sql_last_value ,如何重新同步?答: logstash把上一次同步的最后一条记录id写到 c:\用户\{登陆名}\.logstash_jdbc_last_run文件中,只要删除这个文件即可。如下图环境如下:1. windows 102. elas
    02-10
  • Oracle 史上最全近百条Oracle DBA日常维护SQL脚
     史上最全近百条Oracle DBA日常维护SQL脚本指令  http://blog.itpub.net/30126024/viewspace-2057474/ ---具体SQL如下 查询碎片程度高(实际使用率小于30%)的表可以收缩的表条件为什么block100,因为一些很小的表,只有几行数据实际大小很小,但是block
    02-10
  • C#操作SqlServer MySql Oracle通用帮助类Db_Helper_DG(默认支持数据库读写分离、查询结果实体映射ORM)
    C#操作SqlServer MySql Oracle通用帮助类Db_Hel
    【前言】  作为一款成熟的面向对象高级编程语言,C#在ADO.Net的支持上已然是做的很成熟,我们可以方便地调用ADO.Net操作各类关系型数据库,在使用了多年的Sql_Helper_DG后,由于项目需要,于是乎,就准备写一个Mysql_Helper在实现过程中,发现ADO.Net封装之
    02-10
  • ORACLE、MYSQL的JDBC配置 oracle mysql jdbc
    info.jdbc.driverClassName=oracle.jdbc.driver.OracleDriverinfo.jdbc.url=jdbc:oracle:thin:@192.168.182.100:1521:orclinfo.jdbc.username=infoinfo.jdbc.password=xyxxh6hibernate.show_sql=truemoodle.jdbc.driverClassName=com.mysql.jdbc.Drivermoodle
    02-10
  • IDEA 中Spark SQL通过JDBC连接mysql数据库
    一.IDEA装驱动:1.下载一个MySQL的JDBC驱动:mysql-connector-java-5.1.44.tar.gz2.在idea Open Moudle Settings 在 Moudle中   选Dependencies + JDC驱动的解压位置 选(mysql-connector-java-5.1.44-bin)这个就ok二.程序:import java.util.Propertiesim
    02-10
  • java.sql.SQLException: No value specified fo
    public boolean updateMemberslnfo(MembersInfo membersInfo) throws SQLException{StringBuffer sqlBuffer = new StringBuffer("UPDATE membersinfo SET ");boolean check = true;ListObject params = new ArrayListObject();if(membersInfo.getMname()!=nul
    02-10
点击排行