db2v8 数据迁移

db2数据迁移

版本:v8.1

任务:从生产拿数据到测试环境

处理过程中遇到的问题:

1、字符集问题。源数据库代码页为gbk,目标数据库代码页为uft-8

处理方法:导出或者导入时做格式转换

注意:由于在gbk库里面,一个汉字占两个字节,而uft-8里面,一个汉字站三个字节 ,导导入目标库时,存在字段超过长度的告警错误

导出:

db2 "export to xxx.ixf of ixf select * from xxx"

db2 "export to xxx.ixf of ixf modified by codepage=1208 select * from xxx"  --会自动把表结构中字段类型为char和varchar的字段长度扩大一倍

db2 "export to xxx.del of del modified by codepage=1208 select * from xxx"

导入:

db2 "load from xxx.ixf of ixf replace into xxx nonrecoverable"

db2 "load from xxx.del of del replace into xxx nonrecoverable"

注意:load导入时,如果长度字段超长,为把超长的每一条记录打印出来,数据量大的情况下很让人无语,会花大量的时间。对于这种错误,这次的处理方法就直接先把表字段长度扩大好了,然后再导入数据。查看load导入时的详细信息,可以使用db2 list utilities show detail

2、改字段类型问题

db2v8貌似不能直接修改,只能先删字段再加字段,无奈的时,该字段上面有索引....只能发大招,重建表了

为了安全,先备份原来环境的表结构

方法一:db2 "export to tbname.ixf of ixf select * from tbnamewhere 1=2"

方法二:db2look -d dbname -e -t tbname -o tbname.sql

将方法二中导出来的sql语句修改一下,把字段超长的长度加大,然后执行db2 -tvf tbname.sql 重新建表

另外:本来是想把测试环境的数据库删掉,直接把生产的数据库全部对象ddl拿回来,在测试环境还原一下,由于时间紧迫,又没做过,怕搞坏了,下次自己重新再做一次恢复,目前还没有相关的脚本,也希望有经验的同志不吝赐教,多多指导

临时建了一个空数据库

db2 create dbname using codepage=1208 territory cn

创建缓冲池

db2 create bufferpool bp16k size 2000 pagesize 16384

创建表空间

db2 create tablespace tpname pagesize 16384 managed by database using (file,‘/dd/ddd‘ size)   bufferpool bp16k

时间: 2024-10-25 18:49:34

db2v8 数据迁移的相关文章

Code First Migrations更新数据库结构(数据迁移) 【转】

背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成. 要求 已安装NuGet 过程示例 [csharp] view plaincopyprint? //原model //原model [csharp] view plaincopyprint? us

数据迁移,iis的各种坑

最近在搞iis发布  本来在家里实验过很多次 都是可以的 觉得很容易!但是到客户现场去试的时候发现各种坑 在这里给大家说说  望大家注意点哈! 首先:数据迁移先是备份数据库,然后再还原  这个地方一定要注意数据库版本问题,比如你如果在sqlserver2012上备份的,到sqlserver2008版本上还原就不行,因为这是高版本还原到低版本了 就不兼容,但是低版本还原到高版本就可以! 第二步:还原好了数据库,vs代码要配置服务器了,也要注意个问题:因为vs配置的是sqlserver的sql认证账

EF数据迁移,未将对象引用设置到对象实例

现象: 执行Enable-Migrations -force时就报"未将对象引用设置到对象实例"的异常: DbProviderServicesExtensions.GetProviderManifestTokenChecked 原因: 1.项目启动项的App.config或web.config里面没有配置 entityFramework节点或connectionStrings节点,EF在数据迁移时找不到数据库连接串信息 2.项目启动项配置错误,应该选择有entityFramework节

SQL SERVER几种数据迁移/导出导入的实践

SQLServer提供了多种数据导出导入的工具和方法,在此,分享我实践的经验(只涉及数据库与Excel.数据库与文本文件.数据库与数据库之间的导出导入). (一)数据库与Excel 方法1: 使用数据库客户端(SSMS)的界面工具.右键选择要导出数据的数据库,选择“任务”——“导出数据”,下图1,按照向导一步一步操作即可.而导入则相反,导入时,SQLServer会默认创建一张新表,字段名也默认跟导入的Excel标题一样,并且会默认字段数据类型等.当然在可以在向导进行修改.需要注意的是如果标题不是

mysql5.1.33到mysql5.5.33数据迁移的过程中要注意的问题

背景:公司要把测试库mysql5.1.33上面的数据迁移到mysql5.5.33上面,5.1上面的表大都是myisam表,为了尽量让数据一致,用了--lock-all-table选项 注意事项: 1,可以先导权限表,这样就可以把业务迁移到已经导成功的那一部份库上面 2,导之前要先把binlog禁掉,这样导入的速度会快一些,set global sql_log_bin=OFF,没有禁用binlog的情况下每小时大约只能导1G多的数据.禁用binlog后每个小时大概可以导入20G的数据 3,选择in

Django模型修改及数据迁移

Migrations Django中对Model进行修改是件麻烦的事情,syncdb命令仅仅创建数据库里还没有的表,它并不对已存在的数据表进行同步修改,也不处理数据模型的删除. 如果你新增或修改数据模型里的字段,或是删除了一个数据模型,你需要手动在数据库里进行相应的修改或者使用South.Django 1.7中已经集成了South的代码,提供了3个新命令: migrate: 用于执行迁移动作,具有syncdb的功能 makemigrations: 基于当前的model创建新的迁移策略文件 sql

mysql数据迁移

一. 数据迁移简介所谓的数据迁移,就是指将原有的数据库系统迁移到另外一个业务系统上数据迁移的原因是多种多样的,有可能是业务变更.硬件升级.平台切换或升级mysql数据库 迁移的注意事项:(1).相同版本可以迁移(2).注意版本可以使用的引擎(3).低版本可以向高版本进行数据迁移,高版本一般兼容低版本的特性(4).高版本的数据不能向低版本进行数据迁移,会出现数据不兼容的情况(5).迁移是请注意导出数据和备份数据,出现迁移失败时,立即启动备份方案,保证公司业务的正常运行(6).在数据迁移时,要选择用

数据迁移实战:基于Kettle的Mysql到DB2的数据迁移

From:https://my.oschina.net/simpleton/blog/525675 一.什么是ETL ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.ETL一词较常用在数据仓库,但其对象并不限于数据仓库. 二.Kettle简单说明 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,数据抽取高效稳定

Redis数据迁移方案

场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: redis-dump -h host1 -p 6379 -d 1 --json > mydb.json针对RedisB: cat mydb.json | redis-dump --convert | redis-cli 方案二:参考: http://www.zlovezl.cn/articles/mig