DB2数据库迁移,数据库导入导出
目录
DB2数据库迁移,数据库导入导出
DB2数据库迁移
前言
解决DB2数据库在服务器之间迁移时,外键依赖导致问题。日前使用DataGrip导出数据库表结构sql时,直接执行sql语句进行迁移,将出现因外键依赖引起的表内容丢失,本文使用db2move和db2look进行迁移,解决了此类问题。
1.导出
1.导出表结构
执行如下语句后生成表结构.sql文件,包含数据库结构、依赖、存储过程、Function、Sequence等。
db2look -d 数据库名 -e -z 模式名 -l -o 文件名.sql
-d:数据库名
-e:生成DDL脚本
-z:模式名
-l:生成数据库布局,数据库区分组,缓冲池和表空间
-o:生成文件重命名
2.导出表内容
执行下面语句,将导出文件放到需要导入的服务器上空文件夹中
db2move 数据库名 export
db2move 数据库名 export -sn 模式名
导出文件如下
2.导入
1.连接数据库
使用db2inst1用户登录服务器,然后连接需要导入的数据库
db2 connect to 数据库名 user 数据库用户 using 数据库密码
2. 导入表结构
执行导出的.sql文件
db2 -tvf 文件名.sql
3.导入表内容
在存放文件夹中执行
db2move 数据库名 load
4.检查一致性
因外键存在,数据库内容导入时因执行顺序导致未完全执行的sql将存在缓存中,执行如下的语句可尝试检查指定表的一致性
db2 set integrity for 模式名.表名 immediate checked
有多个表需要完成一致性检查时,可以先执行如下语句进行查找
db2 "select 'db2 set integrity for 模式名.'||TABNAME||' immediate checked' from syscat.tables where TABSCHEMA='模式名' and STATUS='C'"
复制查找出来的语句,反复执行,直到所有的表都完成sql插入,此时数据库迁移完成。