在DB2中正确导出LOB数据

 
   | |

导读:本文介绍了DB2表格操作技巧,即如何正确导出LOB数据。作者还分析了这一方法所能带来的优势。

关键词:LOB数据类型 DB2 数据库 表操作

正在加载数据...

  如现在有一张员工信息的表(USER_INFO)表。在这张表中有三个字段,分别为员工编号、员工姓名、员工身份证复印件等等。由于员工身份证复印件其容量比较大,为此数据库中采用的是LOB数据类型。当需要将这张表格中的数据导出到特定文件中的时候,只要这些身份证复印件的容量超过32KB的话,则在导出的目标文件中是看不到这些身份证复印件的。在导出的时候,系统会将这些身份证复印件保存在用户指定的文件夹内。而在导出地目标文件中,只有这些复印件对应的名字而已。所以说,如果一个表中有LOB数据类型,在导出到特定格式的文件中时,就需要区别对待。

  如果某张表带有LOB类型的数据,此时在书写导出语句的时候,就需要特别的注意。如需要按如下的格式来书写导出LOB数据的语句:

  

  导出LOB数据表与普通表相比的一些特殊选项。

  跟普通的导出语句相比,在导出带有LOB数据类型的数据时,在语句中多了Lob to d:\photo1,d:\photo2 Lobfile p1,p2 modifiled by lobsinfile这么一条语句。其中选项LOB TO定义的是LOB文件要存储的路径。在定义这个路径的时候,用户可以定义多个目录。即可以指定一个使用逗号分隔符的目录列表来定义其文件存储的位置。如果没有定义目录的话,则数据库会采用当前目录作为这个LOB文件存储的位置。跟普通的操作系统目录一样,不同目录中的LOB文件名字可以不同。但是同一目录中的LOB文件名字必须唯一。第二个需要指定的是LOB文件的命名规则。由于在导出数据的时候,会产生很多的LOB文件。而这些数据库自动创建的文件必须要具有文件的名字。此时数据库管理员必须要指定这些LOB文件的命名规则。这个命名规则主要是利用可选项LOBFILE来确定。通过这个可选项,数据库管理员可以提高一个使用逗号分隔的基本名称列表。操作系统就会根据这些名字来生成LOB文件的名字。需要注意的是,此时数据库管理员提供的只是一个基本的名称,或者说只是LOB文件名的前缀。系统在生成LOB文件的时候,会自动在这个基本名称(或者叫做前缀)的后面加上3位数字的扩展。如上面笔者提供了p1作为LOB文件名的扩展,那么其最后生成的文件名就可能使p1001、p1002等等。可见系统管理员提供一个文件前缀名,系统就会自动扩展出999个可用的LOB文件名。因为操作系统会在LOB文件前缀后面加上3位阿拉伯数字的扩展名。这个选项跟目录选项一样是可选的。如果用户没有指定可用的文件基本名称,则DB2数据库会以db2exp作为基本的文件扩展名。然后在这个名字后面采用3位数字的扩展名,生成1000个可用的LOB文件的文件名字。

  最后需要注意的是,如果在将某个表导出到特定文件的时候,想要分离文件导出LOB的时候,即将LOB文件与其他信息分开存放,还需要在导出语句中加入一个特殊的关键字。二、确定可用的文件名。

  在将LOB数据类型导出的时候,数据库系统会在用户指定的目录中创建文件用来保存这些LOB数据类型。在数据库中一个LOB数据段就需要创建一个文件。也就是说,如果表中有2个字段采用的是LOB数据类型,而这个表有2万条记录的话,那么在导出的时候就会创建4万个文件。而一个文件对应一个文件名字,所以数据库管理员必须要保证有4万个可用的文件名字(注意不是文件基本名字)。如果在导出的时候,LOB数据类型太多,现有可用的文件名字不够使用的话,那么导出作业就会以失败告终。

  为此在导出数据之前,数据库管理员需要评估一下数据表中LOB数据段的数量。然后根据这个数量来确定到底需要有多少个可用的文件名字。然后根据这个数量来确定存储的目录与文件基本名称的数量。如上面这个例子所示,最终的可用文件名字有多少呢?

  首先数据库管理员需要知道的,一个基本名称可以通过三个阿拉伯数字扩展,得到1000个文件名字。然后同一个文件名字可以在不同的目录中使用。也就是说,上面指定的目录中,目录不同,文件名可以不同。只要保证同一个文件夹内部要有重名的文件即可。那么,两个文件基本名称,两个目录,再加上文件名字扩展的话,可以得到4000个可用的文件名字。这里有一个简单的计算公式,就是文件基本名称的数量*定义目录的数量*1000,最后得到的结果就是可用的文件名字数量。如果最后生成的LOB文件的数量小于这个文件可用数量的话,那么就可以正常导出。但是如果表中包含的LOB文件数量超过了这个可用的文件名数量,即使超过了一个,也会因为目的LOB文件得不到可用的文件名字而导致导出失败。当失败的时候,很难查询到底是哪个LOB文件没有导出。为此在导出之前,最好能够预计到可能需要的文件名字数量。其实这个预算也是比较简单的。至需要知道需要导出的表中有多少列是LOB数据类型的,然后再乘以记录数即可。一般情况下,文件的可用数量只可以比实际的LOB文件多,而不能够比起少。多了不会出文件,但是如果少了的话,则会导致数据导出失败。

  有时候为了避免这个问题的出现,数据库管理员不得不增加LOB文件的目标目录,或者增加LOB基本文件名的数量,使得导出能够为所有包含在SELECT语句的结果集合中的LOB数据生成足够多的文件名字。这里需要注意的是,数据库管理员不可以增加扩展的位数。即文件名扩展只可以用到3位阿拉伯数字。另外需要注意的是,由于LOB数据类型的数据都比较大,将他们导出到特定文件中的时候,往往需要花费比较长的时间。为此笔者并不建议一下子就将导出LOB数据类型导出来。在Select语句中加入适当的限制条件,可以分批导出LOB文件,以减少每次导出的时间。如导出所有员工的身份证复印件时,可以按性别分为两类或者按部分来进行分类。这有两个好处。一是可以缩短每次导出的时间,即使中间遇到问题也可以控制在最小的范围之内。二是导出的LOB文件名是随机的。为此分批导出的话,在寻找对应LOB文件的时候,会方便许多。

原文出处:http://tech.ccidnet.com/art/1105/20100128/1989811_1.html
 
来源:赛迪网    
 
 
 
 
 

DB2性能与调优

 
在许多XML应用场合,XML数据的结构与使用率都决定了拆分工作的困难。这也就是为什么DB2支持XML列,使得用户无需转换就可以对XML数据进行索引与查询。
 
DB2 9 for z/OS 同DB2 9.x for Linux, UNIX, and Windows支持两种拆分方法,XML TABLE函数与XML Schema注释。
 
在9月23日IBM DB2诞生25周年纪念大会上,IBM正式宣布启动寻找XML超级明星的全球比赛,旨在测试参赛者对XML相关知识和技能以及数据库技术的掌握情况。

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录