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 “导出的数据导入到数据库中并把相同的数据替换掉

猜你喜欢

转载自blog.csdn.net/weixin_42565031/article/details/88994211