目录

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 模式名

导出文件如下

https://i-blog.csdnimg.cn/blog_migrate/f5887f4395686b80a7a4ce4f6468cf3b.png

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插入,此时数据库迁移完成。