DB2 导出导入 SCHEMAS

DB2 导出导入 SCHEMAS 的操作步骤,需要手动处理中间出现的问题

2018/11/14 运维 数据库 DB2

DB2 导出导入 SCHEMAS

此方法通过 db2look 导 schemas 的结构,通过 db2move 导数据。

但是此方法会出现一定的问题,在导入的时候,如果出现问题,需要根据实际情况进行手动干预处理。

  1. 创建文件夹用于存储导出的数据和结构

     mkdir -m 777 export
     cd export
    
  2. 通过 db2move export 导出指定模式的数据

     db2move SAMPLE export -sn db2inst1 -u db2inst1 -p db2inst1
    
  3. 通过 db2look 导出 DDL

     db2look -d SAMPLE -e -u db2inst1 -z db2inst1 -l -o db2look.sql
    

    参数说明:

    • -e 提取数据库对象的 DDL 语句,例如表、视图、自动摘要表、索引、触发器、序列、主键、引用、检查约束、用户定义函数和过程。
    • -a 提取用户创建的所有对象的 DDL 语句。如果这个选项与 -e 选项一起指定,那么就要对数据库中的所有对象进行处理。
    • -z schema-name 将输出限制在一个或多个(最多 30 个)指定的表中。名必须使用空格字符分隔开。跟 -a 连用的时候无效。
    • -m 生成需要的 UPDATE 语句,对表、列和索引的统计信息进行复制。
    • -l 为用户定义的表空间、数据库分区组和缓冲池生成 DDL 语句。
    • -td delimiter 指定 db2look 工具使用的分隔符 ; 默认为分号 ;
    • -o file-name 将输出结果写入文件。如果没有指定该选项,就将输出结果写入标准输出设备。
    • -u user-name 将输出限制在一个或者多个用户指定的表中。名必须使用空格字符分隔开。跟 -a 连用的时候无效。
  4. 编辑生成的 SQL 文

    CONNECT TO 指向需要导入的库。

  5. 执行 SQL

     db2 -tvf db2look.sql > db2look.log
    

    这期间注意保存 Log,将出现的问题手动进行处理。

  6. 在问题都处理完之后,将数据导入

     db2move BONC load
    
  7. 一些测试时的小记

    • 测试的时候使用的是 SAMPLE 库,pagesize 是 8192,在创建新的 database 的时候,需要制定 pagesize,例如 db2 create database bonc pagesize 8192
    • 为了测试方便,使用 docker 搭建数据库进行测试

        docker run -d --name db2 -p 50000:50000 -e DB2INST1_PASSWORD=db2inst1 -e LICENSE=accept ibmcom/db2express-c:latest db2start
        docker exec -it db2 /bin/bash
      

Search

    Table of Contents