db2 load 问题
(2009-11-20 18:29:21)
标签:
杂谈 |
同样的用户在两个表中居然是不同的用户ID.这就证明倒入数据时出了问题.
于是看了一下建表语句.其中用户ID是:
之前的倒入倒出语句:
export to d:\tables\TAB_USER
import from z:\TAB_USER
其中MODIFIED BY
IDENTITignore
load from
D:\USER\TAB_USER
load命令中的modified by identityoverride可以保证导入数据时那些自增字段的值和原数据库中的数据一致.开始导入导出采用DEL格式.发现导入的数据中文部分全部显示乱码,于是就采用了IXF格式.结果显示数据全部一致.使用LOAD的缺点就是他没有一个选项,在目标表不存在的时候系统自动建立.为了不想每次都手动去创建表.就导出一个空文件,然后再导入到目标表这样可以清空原表.如果用delete的话,下次导入自增列会接着它上次的号码生成.
load from d:\tables\TAB_EMPFILE of IXF
*而且load from 后面的源文件只能是本地的不可以是映射其它机器上的,这样每次导表时还得先把源文件拷贝到另一台机器上.然后在另一台机器上LOAD比较麻烦.
[标题]
用load命令和identityoverride参数向有identity列的表中装载数据后的注意事项
问题描述:
对于有Identity列,并从1开始的表, 当用LOAD命令装载数据后, 如何调整Identity列的值
解答:
对于有Identity列,并从1开始的表, 当用LOAD命令装载数据后, 再次向该表中插入时,
Identity列
会继续沿着load装载前的值继续插入,而不会根据load的数据自动调整,这样就有可能出现重复的值。
为此在DB2版本7补丁程序2之后,在ALTER
TABLE命令中新增加了相应的功能,
可按如下步骤处理:
1. 建表,并插入数据;
2. 用load命令装载数据;
3. 用select max() from
table命令得到此时identity列的最大值;
4. 用命令 "ALTER TABLE
<tablename> alter column
<column> restart with
<nextval>
此后,再向表中插入数据,
identity列将从nextval重新开始生成。