首页 > 学技术 > 技术网文 > DB2 > 正文

[精彩] 关于db2move的怪问题


来源 chinaunix.net 酷勤网整理

我在用db2move 库名 export之后,在另一台机器上用db2move 库名 import之后,发现大多数表数据能恢复,但有若干张表数据没法恢复,不知何因?



 3000sunqin 回复于:2003-08-08 20:33:10

那些表有什么特征啊?


 chinavrml 回复于:2003-08-08 21:51:59

这些表,都有一个自动增长的ID字段,设成identity=yes ,nullable=no


 3000sunqin 回复于:2003-08-09 14:15:58

原因就出在这里,如果你的IDENTITY列创建表的时候都是定义成Always的话,那么在导入数据的时候该列数据是不能被赋值的,而是应该由系统生成,使用DB2MOVE无法导入这样的表。对于这种含有IDENTITY列的表,你只能使用import语句来进行到,相关的参数是IDENTITYIGNORE,IDENTITYMISSING,具体意义请参考Data Movement Utilities Guide and Reference。
个人觉得如果需要实现唯一主键的话还是不要使用IDENTITY列,而是使用sequence比较便于维护和管理。


 chinavrml 回复于:2003-08-09 14:43:58

引用:原帖由 "3000sunqin"]原因就出在这里,如果你的IDENTITY列创建表的时候都是定义成Always的话,那么在导入数据的时候该列数据是不能被赋值的,而是应该由系统生成,使用DB2MOVE无法导入这样的表。对于这种含有IDENTITY列的表,你只能使用i..........
 发表:

     

谢谢指点,你说的import是单独的命令,还是db2move 库名 import中的import?
另外能讲一下sequence是什么,如何做吗?
谢谢!


 3000sunqin 回复于:2003-08-11 20:31:35

import是指单独的命令
sequence是一个序列对象,是一个不断增加的计数寄存器,
你在每次要插入记录的时候,你就去取Sequence的next值,将这个值做为唯一值来用就可以了。
如果你不知道Sequence,我还是请你仔细去看看SQL Reference吧


 chinavrml 回复于:2003-08-12 08:27:22

引用:原帖由 "3000sunqin" 发表:
import是指单独的命令
sequence是一个序列对象,是一个不断增加的计数寄存器,
你在每次要插入记录的时候,你就去取Sequence的next值,将这个值做为唯一值来用就可以了。
如果你不知道Sequence,我还是请你仔细去..........

     
谢谢,我看看文档,有问题再请教。


 chinavrml 回复于:2003-08-13 12:19:01

to 3000sunqin:
Sequence 在7.2以上版本中才被支持。但我用的是V7,这些数据如果才能恢复?能详细说一下如何用import恢复有IDENTITY列的表吗?


 3000sunqin 回复于:2003-08-13 12:26:26

IMPORT的语法中可以忽略indentity列的限制,在导入后,再做一个完整性检查,不过这样就要你自己写脚本了。


 Law 回复于:2003-08-14 09:08:47

请问,在多结点db2中支持Sequence 么?




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=134721
转载请注明作者名及原文出处



收藏本页到: