DB2批量导入导出

一、导出

     1. 先建一个空的文件夹,比如data

     2. 定位到data目录

     3. 导出建表语句:db2look -d 库名 -e -z 用户名 -l -o 文件名.sql

     4. 导出数据:db2move 库名 export

        4.1、命令执行成功后,在data文件夹中的文件列表如下:       

这里写图片描述

         4.2、内容解释:
            4.2.1、db2move.lst:用于批量导入,文件记录了.ixf文件和对应的表名(只记录导出时没有发生错误和警告的表)
            4.2.2、EXPORT.out:相当于导出日志,记录了.ixf文件和对应的表名(映射关系只记录了发生错误和警告的表,没报错的表这里不记录映射关系)
            4.2.3、hrms.sql:这个是建表语句,即【文件名.sql】
            4.2.4、tab*.ixf:数据文件,一个表对应一个.ixf文件
            4.2.5、tab*.msg:操作日志,记录了对应表的操作

        4.3、注意:
            4.3.1、如果数据库字符集和本地字符集不匹配,db2move.lst表中只有一部分记录,而没有记录的表将无法导入到新库中
                4.3.1.1、某个数据库的字符集codeset只能在创建数据库的时候指定,之后不可修改
                4.3.1.2、模式(用户名)的字符集可以修改
                    4.3.1.2.1、查看:db2 get db cfg(可查看代码页的字符集,如UTF-8是1208,GBK是1386)
                    4.3.1.2.2、修改:db2set db2codepage=1386
                    4.3.1.2.3、重启:db2stop force(重启才能生效)

二、导入

    1. 新建数据库:db2 create database 数据库名 using codeset GBK territory CN

    2. 连接数据库:db2 connect to 数据库名

    3. 执行建表SQL脚本:db2 -svtf 文件名.sql(执行之前,需要把文件中的用户名改为本地数据库的用户名,如果一样则不用修改)

    4. 导入数据:
        4.1、定位到data目录
        4.2、db2move 数据库名 load

    5. 注意

        5.1、db2move.lst文件中缺少数据表
            5.1.1、文件中数据表和.ixf文件映射格式:【!"用户名"."表名"!tab序号.ixf!tab序号.msg!】
            5.1.2、根据EXPORT.out文件,得到数据表和.ixf文件的映射关系【表名     tab序号】,这个需要手动处理一下
            5.1.3、通过Excel或其他方式,按照固定格式构建所有的映射关系,复制粘贴到db2move.lst文件中

        5.2、导入成功后,某个表无法操作,执行命令【reorg table 表名】也报错
            5.2.1、删除这个表
            5.2.2、重新创建并导入数据
                5.2.2.1、从SQL脚本【文件名.sql】中找到该表的建表语句,可以单独放到一个文件中执行,也可以复制到客户端工具中直接执行
                5.2.2.2、导入表数据
                    5.2.2.2.1、在EXPORT.out文件中根据表名和.ixf文件映射关系,找到对应的.ixf文件
                    5.2.2.2.2、单表导入:db2 import from tab序号.ixf of ixf insert into 表名
                5.2.2.3、可能导入失败,报错:数据库事务日志已满
                    5.2.2.3.1、原因:单个表数据量过大,如达到1.5G
                    5.2.2.3.2、解决办法:调整日志文件大小和数量
                        5.2.2.3.2.1、db2 update db cfg for 数据库名 using LOGFILSIZ 65536(这是修改日志文件大小)
                        5.2.2.3.2.2、db2 update db cfg for 数据库名 using LOGPRIMARY 12(这是修改主日志文件数量)
                        5.2.2.3.2.3、db2 update db cfg for 数据库名 using LOGSECOND 13(这是修改辅日志文件数量)
                        5.2.2.3.2.4、db2stop force(重启才能生效)
                        5.2.2.3.2.5、连接数据库后再次执行导入单表命令即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值