前面已经写一些小经验,现在再写一些吧。
(3)移动数据
利用db2move工具程序在两个不同DB2数据库间移动数据。可以把一个有大量数据的表需要从一个数据库Copy到另外一个数据库。db2move工具可以按以下3种模式之一运行:EXPORT,IMPORT,LOAD。
(1)当运行EXPORT 模式时,它将用EXPORT程序从表或者指定的表导出数据到数据文件,数据文件类型为IXF.它将产生一个DB2MOVE.LST文件,导出时,记录所有导出表和产生的文件的名字。也会产生数据消息文件。
(2)当运行IMPORT模式时,IMPORT程序被用来把IXF类型的数据文件导入到给定的数据库中。它尝试读取DB2MOVE.LST文件去查找被导入的数据文件名和数据文件的关联。
(3)当运行LOAD模式时,在DB2MOVE.LST文件里指定的输入文件将用LAOD程序插入表中,这个模式用得比较少。
db2move语法如下:db2move<database name><action><additional option>。
<action>是EXPORT,IMPORT或LOAD。<additional option>可以是-tc,-tn,-io,-lo,-l,-u,-p.其中各个功能不一一说明了。
实例:
设已有一个数据库SAMPLE,需要COPY到另一个新数据库中,设为NEWSAMPLE。
(1)导出数据库SAMPLE所有表:在DB2的命令窗口(所有程序->IBM DB2->命令行工具->命令窗口),连接数据库(connect to SAMPLE),连接成功后,再输入以下命令:db2move sample export
执行后会在DB2安装目录(如C:/Program Files/IBM/SQLLIB/BIN)中生成四种文件,分别是:EXPORT.OUT-EXOORT操作的结果,DB2MOVE.LST-创建的一个包含了文件名和表名的列表文件。TAB***.IXF-IXF文件包含了数据库SAMPLE里所有表的数据。TAB***.MSG-消息文件。
(2)在NEWSAMPLE上重新建立数据库结构并且导入IXF文件里的数据。在命令窗口中输入以下命令:db2move newsample import.
此命令会把EXPORT生成的文件,分别是DB2MOVE.LST和TAB***.IXF作为输入文件,输出文件是IMPORT.OUT和TAB***.MSG。这样就可以把SAMPLE数据库的表及表数据COPY到NEWSAMPLE中。
(3)但要注意的是:db2move只是把表和表数据加入数据库中,如果表之间有外键关系,db2move工具是不能自动帮你生成表之间的外键关系的,需要自己手动设置表之间的外键关系。同时,如果有设置自增的主键,在重新导入数据时,是导入不了的,所以如果有数据列设置为自增,就要尝试别的方法了。