天天看点

DB2导入导出命令整理

使用db2 backup指令备份

使用db2 restore指令恢复

使用db2look提取数据库结构DDL

用于数据移动的文件格式

使用db2move导出全部数据

使用db2 export指令导出数据

使用db2move导入(import)数据

使用db2 import指令导入数据

1.使用db2 backup指令备份(testdb数据库名,db2inst1实例名)

首先关闭所有到数据库的连接,将数据库置为“静默”状态:

$ db2 connect to testdb user db2inst1 using thepasswd

$ db2 quiesce database immediate force connections

$ db2 connect reset

现在可以开始备份了:

$ db2 backup database testdb to “/home/backup” user db2inst1 using thepasswd

解除数据库的“静默”状态:

$ db2 connect to testdb user db2inst1 using thepasswd

$ db2 unquiesce database

$ db2 connect reset

说明:

以上指令将会把数据库testdb备份到指定目录 /home/backup下,所以请确保当前登陆用户(db2inst1)对该目录有读写的权限。

2.使用db2 restore指令恢复

相同库名恢复:

$ db2 restore database testdb from “/home/backup”

说明:

这将会从指定的位置恢复数据库testdb。

不同库名恢复:

$ db2 restore database zwdb from “/home/db2inst1/finger” into wfyh

说明:

这个指令将会建立一个新库,名为testdb_new,其结构、内容来自原先testdb的备份。

db2 restore database zwdb from “/data/20180717/shuju” taken at 20180717183305 on “/data/20180717/shuju” dbpath on “/zwdb” into fingerdb

db2指定需要还原的路径

3.使用db2look提取数据库结构DDL

su - db2inst1 (原实例用户)

建立一个文件夹

mkdir data

cd data

导出表结构:db2look –d testdb –e –o bak_db.sql

4.使用db2move导出全部数据

mkdir data

cd data

db2move testdb export –u db2inst1 –p thepasswd

说明:

这将会把数据库testdb中的全部数据提取到当前目录(data)中。每个表的内容都存储在一个.ixf文件中,每个.ixf文件都有一个与之相对应的.msg文件,.msg文件是描述从表中导出数据时的信息的。另外还有两个文件,db2move.lst用来记录.ixf文件、.msg文件与表的一一对应关系,EXPORT.out记录的是导出数据时的屏幕输出。

5.使用db2 export指令导出数据

与上面提到的db2move的export功能不同,db2 export是一个更加细致的导出工具,它支持三种数据文件格式:DEL, WSF, IXF.

以下示范将数据库testdb中表mytbl的数据导出,存储在目录 /home/backup 下。

建立到数据库的连接:

$ db2

db2 => connect to testdb user db2inst1 using thepasswd

以DEL格式导出:

db2 => export to /home/backup/mytbl.txt of del select * from mytbl

以IXF格式导出:

db2 => export to /home/backup/mytbl.ixf of ixf select * from mytbl

注:若需要记录导出过程中的message,使用:

db2 => export to /home/backup/mytbl.ixf of ixf messages /home/backup/mytbl.msg select * from mytbl

断开连接:

db2 => connect reset

db2 => quit

6.使用db2move导入(import)数据

cd data

db2move testdb import –u db2inst1 –p thepasswd

存在的问题:

db2move import方式只能导入“普通”的表,如果表中存在自增长的IDENTITY列,那么使用db2move import时,会出错。这是因为,如果IDENTITY列创建表的时候都是定义成always的话,那么在导入数据的时候该列数据是不能被赋值的,而是应该由系统生成,使用db2move无法导入这样的表。对于这种含有IDENTITY列的表,只能使用db2 import指令来进行导入,相关的参数是IDENTITYIGNORE,IDENTITYMISSING。我将在下一部分给出具体的指令操作。

7.使用db2 import指令导入数据

import和export是一对存在对应关系的指令,有一点不同的是,import支持四种格式:ASC, DEL, WSF, IXF, 而export只支持三种(见上面相应部分的描述)。

以下示范将数据文件/home/movedata/mytbl.ixf导入到数据库testdb中。

$ db2

db2 => connect to testdb user db2inst1 using thepasswd

db2 => import from /home/movedata/mytbl.ixf of ixf insert into mytbl

db2 => commit work

db2 => connect reset

db2 => quit

若表中存在自增长的IDENTITY列,需要使用相应的参数才能导入,比如:

db2 => import from /home/movedata/mytbl2.ixf of ixf modified by identityignore insert into mytbl2

8.查看数据库中表:

db2 connect to testdb

db2 list tables

9.导出原数据库表结构以及数据

su - db2izw (原实例用户)

建立一个文件夹

mkdir data

cd data

导出表结构:db2look –d zwdb –e –z db2izw –l –o whzw.sql

导出数据:db2move zwdb export

修改配置:修改db2move.lst里面的实例名为导入数据库的实例名

打包已导出表结构及数据:tar zcvf whzw.tar.gz data/

10.在新db2导入数据

将data.tar.gz包ftp到新服务器上的实例用户下

解压tar xvf whzw.tar.gz

cd data

导入表结构:db2 –tvf whzw.sql

导入数据:db2move zwdb load -lo replace --把上述“db2move zwdb export “导出的数据导入到数据库中并把相同的数据替换掉