专家解析:在DB2中正确导出LOB数据

数据库
如现在有一张员工信息的表(USER_INFO)表。在这张表中有三个字段,分别为员工编号、员工姓名、员工身份证复印件等等。由于员工身份证复印件其容量比较大,为此数据库中采用的是LOB数据类型。

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

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

 

  1. Export to user_info.del of del 
  2. Lob to d:\photo1,d:\photo2 Lobfile p1,p2 modifiled by lobsinfile 
  3. Select * from user_info. 

 

  一、导出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数据段的数量。然后根据这个数量来确定到底需要有多少个可用的文件名字。然后根据这个数量来确定存储的目录与文件基本名称的数量。如上面这个例子所示,最终的可用文件名字有多少呢?

责任编辑:honglu 来源: IT专家网
相关推荐

2009-07-22 09:01:54

导出LOB数据DB2

2010-08-18 10:29:41

DB2 Capture

2010-08-04 15:10:47

2010-09-06 09:13:42

DB2表格

2010-08-17 15:24:43

DB2数据移动

2011-03-14 16:42:54

DB2 UDB监控死锁

2010-08-20 11:16:39

DB2 优化器

2013-01-18 10:44:30

IBMdW

2010-07-27 12:33:14

DB2数据库

2010-07-30 15:44:04

DB2数据库

2010-07-30 14:49:24

IBM DB2数据库

2010-08-09 16:16:58

DB2取得当前时间

2010-09-07 16:11:19

执行DB2命令

2009-07-06 17:34:26

远程复制DB2

2010-02-04 09:50:11

DB2Oracle数据

2010-11-04 13:25:16

DB2在线导出

2010-08-02 10:52:31

DB2取得当前时间

2010-08-20 08:52:25

DB2死锁

2011-03-03 14:52:40

DB2数据库恢复

2010-07-30 09:57:31

点赞
收藏

51CTO技术栈公众号