我在用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 么?
|