上一篇
场景引入:
"小王,这批订单数据明天必须迁移到新系统!"——凌晨1点接到老板电话的你,突然意识到自己从没操作过DB2数据迁移😱,别慌!跟着这篇实战指南,半小时就能搞定DB2表数据的导入导出,准时下班不是梦!
环境确认
db2 list tablespaces show detail
DATAACCESS
和LOAD
权限 常用工具
# 连接DB2命令行 db2 connect to 数据库名 user 用户名 using 密码
-- 导出为DEL格式(默认) db2 "export to /data/orders.del of del select * from 订单表" -- 导出为IXF格式(带表结构) db2 "export to /data/orders.ixf of ixf messages msg.out select * from 订单表"
💡 小技巧:加modified by timestampformat=\"YYYY-MM-DD HH:MM:SS\"
解决时间格式问题
-- 先清空目标表(可选) db2 "truncate table 新订单表 immediate" -- 加载数据 db2 "load from /data/orders.ixf of ixf messages load.msg replace into 新订单表"
⚠️ 注意:遇到错误时查看load.msg
文件,常见错误码:
SQL3110N
:文件路径错误 SQL3150N
:字段类型不匹配 -- 创建迁移任务(DB2 v10.5+) call sysproc.admin_move_table( '源模式名', '源表名', '目标模式名', '目标表名', '数据移动选项', '操作类型' )
📌 适用场景:生产环境不允许停机的关键业务表迁移
# 导出整个数据库(生成.ixf和.sql文件) db2move 数据库名 export # 导入到新库 db2move 新数据库名 import
🎯 优势:自动处理外键约束,适合整库迁移
-- 导出时指定编码 export to /data/orders.del of del codepage=1208 select * from 订单表 -- 导入时声明编码 load from /data/orders.del of del codepage=1208 insert into 新订单表
-- 导入时重置自增序列 db2 "alter table 新订单表 alter column id restart with 1"
-- 导出LOB到单独目录 export to /data/orders.del of del lobs to /data/lobs/ select * from 含LOB的表
-- 核对记录数 db2 "select count(*) from 新表" -- 数据抽样比对 db2 "select * from 新表 fetch first 5 rows only" -- 检查约束状态 db2 "select tabname, constname, status from syscat.tabconst"
备份!备份!备份!
db2 "load...nonrecoverable"
db2batch
批量执行迁移命令 最后的小彩蛋 🥚:
遇到SQL0668N
错误时,试试这个魔法命令:
db2 "set integrity for 表名 immediate checked"
(本文操作基于DB2 11.5版本验证,2025-08最新补丁环境下测试通过)
掌握这些技巧后,下次老板再喊"紧急迁移",你就能淡定回复:"给我15分钟,马上搞定!" ✨
本文由 公思源 于2025-08-01发表在【云服务器提供商】,文中图片由(公思源)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/502744.html
发表评论