DB2导入、导出数据

1:db2 backup  指令备份
(首先关闭所有数据库连接,将数据库设置为“静默”状态)
$ db2 connect to  tipsqdb user  db2inst1(用户名) using  db2inst1(密码)
$ db2 quiesce data immediate force connections
$ db2 connect reset
现在进行备份:
$ db backup database tipsqdb to "/home/backup" user db2inst1 using db2inst1
解除数据库的“静默”状态:
$db2 connect to tipsqdb user db2inst1 using db2inst1
$db2 unquiesce database 
$db2 connect reset
注意:
1:以上指令把数据库tipsqdb备份到指定目录 /home/backup下,所以一定要确定当前登录用户(db2inst1)对该目录有读写权限,否则会备份失败。
另外:若打算使用root用户来执行备份的话,请先编辑 /etc/group,将root用户加入到与db2相关的几个组:db2grp1,db2fgrp1,dasadm1.
2:生成的备份文件名如下:
tipsqdb.0.db2inst1.NODE000,CATN0000.20050131205259.001
二:使用db2 restore指令恢复数据
相同数据库名恢复:
$ db2 restore database tipsqdb from "/home/backup"(备份路径)
说明:这将会从指定备份路径恢复数据tipsqdb.
不同数据库名恢复:
$ db2 restore database tipsqdb from "/home/backup" into new_database_name
说明:这将会创建一个新的数据库名,其结构和内容与原先tipsqdb完全相同。
使用db2look提取数据库结构DDL
提取DDL
$ db2look -d tipsqdb -a -e -x -o  tipsqdb.sql
注意:使用db2look得到的DDL文件无法直接使用,因为其中存在一些与当前系统相关的特殊信息,所以需要对该文件进行编辑。共有以下几个方面:
1:去点文件头、文件尾的指令
CONNECT TO TIPSQDB;
COMMIT WORK;
CONNECT RESET;
TERMINATE;
位于这几句指令之间的就是定义该数据库的DDL语句,去掉这几句话就会让这个文件变成一个纯粹的DDL文件,另外,有时候很容易出现DB2指令执行错误,所以把这些指令手动执行,有利于发现、定位错误。
三、数据移动的文件格式
数据移动的文件存储格式有ASC,DEL,PC/IXF,WSF.
db2move是一个集成式的数据移动工具,它支持导出(Export),导入(Import),装入(load)三种操作方式。其实db2move的这三种方式分别通过简单实用db2  export,db2 import ,db2 load指令来完成。
此部分仅介绍exoprt,使用db2move导出的数据文件格式IXF(无法查看)。
建立并进入数据存放目录:
$ mkdir /home/backup/mydata
$ cd /home/backup/mydata
导出指定额数据库的所有数据:
db2move tipsqdb export -u db2inst1 -p db2inst1
说明:
1.这将会该数据库数据全部导到当前目录(/home/backup/mydata)中。每个表内容存储在一个.ixf文件中,每个.ixf文件都有一个与之对应的.msg文件,.msg文件时描述从表中导出数据的信息。另外两个文件,db2move.lst用来记录.ixf文件,.msg文件与表的一一对应关系。Export.out记录导出数据是的屏幕输出。
四、使用db2 export导出数据
与上面提到DB2Move的export不同,db2 export 是一个更加精细的导出数据语句,它仅支持三种数据文件格式:DEL,WSF,IXF。
以下示范将tipsqdb的td_con_node数据表数据导出到/home/backup下。
建立数据库连接:
$ db2 connect to tipsqdb user db2inst1 using db2inst1
以del格式导出:
$db2 "export to /home/backup/td_con_node.del of del select * from td_con_node"
以ixf格式导出:
$db2 "export to /home/backup/td_con_node.ixf of ixf select * from td_con_node"
注意:若需要记录导出过程中的message,使用:
db2 "export to /home/backup/td_con_node.ixf of ixf messages /home/backup/td_con_node.msg select * from td_con_node"
断开连接:
db2 connect reset
db2 quit
(可用db2 ? export 查看更多帮助)
五、使用db2move 导入(import)数据
以db2inst1用户身份登录到host 2.
创建数据库testdb2(在/home/db2inst1路径下):
$ db2 "create database testdb2  on '/home/db2inst1' using codeset UTF-8 territory CN
$ db2 connect to testdb2 user db2inst1 using db2inst1
创建一个pagesize为16k的bufferpool,名为mybigpool:
$ db2 "create bufferpool mybigpool immediate size 1000 pagesize 16k"
创建一个tablespace使用上面创建的bufferpool,命名为mybigspace:
$ db2 "create regular tablespace mybigspace pagesize 16k managed by system using
('/home/db2inst1/db2inst1/NODE0000/SQL00004/SQLT0003.0') extensize 16 overhead 12.67 
perfetchsize 16 transferrate 0.18 bufferpool mybigpool dropped table recovery off
注意:extensize ,overhead,prefetchsize,transferrate这几个参数值与所使用的服务器有关
完成空库创建:
$ db2 commit work
$ db2 connect reset
$ db2 terminate
导入(import)数据
使用import方式不需要建表结构,即准备一个空库就行。这一点和load不一样,load需要先建表结构。
我将从host1上导出的全部数据(位于host1下的/home/backup/mydata)复制到host2下的/home/movedata
$ cd /home/movedate
$ db2move mytestdb import  -u db2inst1 -p db2inst1
此时显示所有倒入数据信息
问题:db2move import方式只能倒入“普通”的表,如果表中存在自增长的IDENTITY列,那么使用db2move import时会出错。因为IDENTITY列创建表的时候都定义成always的话,那么在导入数据时该列数据是系统生成,而不能被赋值,使用db2move import 无法导入这样的表,对于这样的表,只能用db2 import 指令来导入,相关参数是IDENTITYIGNORE,IDENTITYMISSING(另,如需实现唯一主角,可不必使用IDENTITY,改为使用SEQUENCE,易维护,管理.
使用db2 import 导入数据
import 和export是一对存在对应关系的指令。只一点差异:import支持数据格式:ASC,DEL,WSF,IXF,export支持三种数据格式:DEL,WSF,IXF。
以下将数据文件/home/data/testTB.ixf导入到数据库TestDB中。
$ db2 connect to TestDB user db2inst1 using db2inst1
$ db2 "import from  /home/data/testTB.ixf  of ixf insert into testTB"
$ db2 commi work
$ db2 quit
注意:仍如上面db2move import,若表中有IDENTITY自增列,需要使用相应参数才能导入
$ db2 "import from  /home/data/testDB.ixf of ixf modified by identityignore insert into testDB.
更多db2 import 查看db2 ? import
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值