赛迪网 > IT技术 数据库 > DB2开发者园地
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

DB2中的数据移动——装入 (1)

发布时间:2006.07.21 11:42     来源:ChinaUnix    作者:

 

  装入(Load)

  装入命令格式与导入类似,命令关键字是Load,但是后面的参数比导入命令多的多,详细用法可以自行参考DB2文档。

  装入与导入类似,都是将输入文件中的数据移入到目标表中,二者的不同点将在实例中逐步解释。

  在装入之前,目标表必须已经存在。

  装入的性能比导入高,原因在后面结合实例详细解释。

  装入操作不记录到日志中,所以不能使用日志文件进行前滚操作。

  装入分为4个阶段:
  1. 装入阶段
  在这个阶段发生两件事:数据存储在表中,收集索引键并排序。在装入时,DBA可以指定多长时间生成一致点。

  它是装入工具的检查点。如果装入在执行期间被打断,它可以从最后一个一致点处开始继续重新执行。

  2. 构建阶段
  在构建阶段,基于在装入阶段收集的索引键信息创建索引。如果在构建阶段发生错误,装入工具就重启,它将从构建阶段开始处重新开始构建。

  3. 在删除阶段,所有违反唯一或主键约束的行都被删除并拷贝到一个异常表(如果在语句中指定相应选项)中。当输入行被拒绝,消息文件中就生成消息。

  4. 索引拷贝阶段
  如果在装入操作期间为索引创建指定了系统临时表空间,并且选择了 READ ACCESS 选项,该索引数据将从系统临时表空间拷贝到原来的表空间。

  装入过程的所有四个阶段都是操作的一部分,只有在所有的四个阶段都完成之后,该装入操作才算完成。在每个阶段都将生成消息,一旦其中的某个阶段发生错误,这些消息可以帮助DBA分析并解决问题。

  导入操作每次插入一行数据时都要检查是否满足约束条件,并且记入日志文件中。

  下面我们看一些LOAD命令特有的功能,IMPORT命令也能做的就不再详细说了。

  例十二:从光标类型文件中进行装入
  定义一个cursor
  declare mycur cursor for select * from org
  创建一个新表,结构与cursor相容
  create table org2 like org
  从cursor中装入
  load from mycur of cursor insert into org2

  除了可以从cursor中装入,还可以从文件、管道、设备中进行装入。而导入命令只能从文件中导入。

  例十三:关于异常表
  由用户定义的异常表可以用于存储不遵循唯一约束和主码约束的行。如果装入的时候没有指定异常表,则违反唯一约束的行将被丢弃并且将不再有机会恢复或修改。

  用SAMPLE数据库中的STAFF表做实验
  1. 创建一个结构与STAFF表相同的表STAFF1
  CREATE TABLE STAFF1 LIKE STAFF

  2. 把STAFF表中的一部分数据插入到STAFF1中
  INSERT INTO STAFF1 SELECT * FROM STAFF WHERE ID<=160

  3. 再创建一个结构与STAFF1相同的表STAFFEXP,作为异常表
  CREATE TABLE STAFFEXP LIKE STAFF1

  4. 给该异常表添加一列,因为异常表和普通表相比,前面的结构都相同,就是最后多出一列或两列(列名任意),第一列是时间戳类型,记录异常记录插入的时间,第二列是大文本类型(至少为32K大小),保存导致该条记录被拒绝的特定约束信息。本例中只添加一个时间戳列。
  ALTER TABLE STAFFEXP ADD COLUMN TIME TIMESTAMP

  5. 为STAFF1表创建一个唯一索引
  CREATE UNIQUE INDEX IDXSTAFF ON STAFF1(ID)

  6. 先运行导出命令做出一个文本文件
  EXPORT TO D:\STAFF.TXT OF DEL SELECT * FROM STAFF

  7. 然后运行装入命令把数据再装入到STAFF1表中
  LOAD FROM D:\STAFF.TXT OF DEL INSERT INTO STAFF1 FOR EXCEPTION STAFFEXP

  由于表STAFF1中有唯一索引,所以会有一部分数据因为违反这个约束条件而不能插入到STAFF1表中,这些记录就会插入到异常表STAFFEXP中。

  注意一点,异常表必须自己先定义好,装入命令不能够自动生成异常表,如果找不到指定的异常表,就会报错。

1 2 3 下一页>>


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· DB2数据库安全性全面介绍 (07-20) · DB2的表数据加密 (07-20)
· DB2中的数据值加密 (07-20) · DB2 Web 服务提供者的安全性(3) (07-20)
· DB2 Web 服务提供者的安全性(2) (07-20) · DB2 Web 服务提供者的安全性(1) (07-20)
· DB2 数据库安全总述 (07-20) · DB2 UDB 安全性: 使用 GSS-API 安全机制(SPK (07-20)
· IBM DB2 9新闻发布会:圆桌论坛纪实二 (07-17) · IBM DB2 9新闻发布会:宋家瑜先生的演讲 (07-17)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管