设为首页 收藏本站
查看: 1074|回复: 0

[经验分享] db2 aix 导入 到windows

[复制链接]

尚未签到

发表于 2016-11-13 09:55:51 | 显示全部楼层 |阅读模式
  源:http://hi.baidu.com/celavi/item/4413e0756f7cfd5e0c0a07af
  http://www.cnblogs.com/mac_arthur/archive/2011/08/21/2147846.html
  http://wsql.iyunv.com/blog/1755651
  评:
  首先导出ddl语句然后导出数据,其中要自己建立tablespace  view等,然后导入本地建库,ddl见表,导入数据即可
  aix下导出数据库ddl见表语句
  db2look -d db_name -e -o ddlfile -i username -w password
aix下建立目录  my_data cd进入该目录
导出数据库
  db2move db_name export -u username -p password
一个表生成一个ixf数据文件跟一个msg日志文件

  
 导出单表

export to D:\t_czls.del of del select * from db2admin.t_czls;

windows下
进入到导出目录下,(所有导出数据目录下,众多导出表ixf文件,多表导入)
db2move db_name import -u username -p password
单表导入
首选import
 import  from D:\t_czls.del of del modified by identityignore  replace into db2admin.t_czls

load  from D:\t_czls.del of del modified by identityignore  replace into db2admin.t_czls
 
 
资料0
  首先,明确一点:db2数据库跨平台迁移(如:从Windows系统迁移到AIX系统),不能通过数据库备份(backup)恢复(restore)来实现。
  要完成数据库迁移,通常需要做以下几个方面的工作:
  1记录源数据库的相关配置参数,包括数据库注册表变量(db2set)、数据库管理系统参数(dbm cfg)、数据库配置参数(db cfg);
  2用db2look导出建库ddl脚本,用于在目标库中创建数据库对象;
  3用db2move导出源数据库的数据;
  4使用导出的建库ddl(由于平台不同可能需要作少量修改),建库,建数据库对象;
  5参照源数据库的配置参数(通常需要根据目标机器的硬件配置和系统行为进行修改),对目标数据库进行设置(db2set、dbm cfg、db cfg);
  6用db2move导入数据;
  7后续检查,确认迁移过程是否成功。
  1记录源数据库的相关配置参数
  查看数据库注册表变量命令:db2set -all
  查看数据库管理系统参数命令:db2 get dbm cfg
  查看数据库配置参数命令:db2 get db cfg for db_name
  2导出ddl脚本
  db2look -d db_name -e -o ddlfile -i username -w password
  如果数据库非常复杂,包含很多的数据对象定义,那么在执行上述命令前,用户有可能要先调整参数appgroup_memo_sz,才能够顺利的生成数据对象定义文件。db2 update db cfg for dbname using appgroup_mem_sz 51368
  3导出源数据库的数据
  db2move db_name export -u username -p password
  4建库,并创建数据库对象
  使用导出的ddl文件,创建数据库db2 -tvf ddlfile > createSchema.log
  注:对于复杂数据库,此步需要调整到第六步之后进行
  5设置目标数据库相关配置参数
  db2set 参数=参数值
  db2 update dbm cfg using 参数 参数值
  db2 update db cfg for db_name using 参数 参数值
  6导入数据
  db2move db_name import -u username -p password
  7检查是否成功



资料1

SQL3550W 带GENERATED ALWAYS字段的表的import
如果表里有字段定义为GENERATED ALWAYS,那么import的时候会报错:

SQL3550W The field value in row "1" and column "1" is not NULL, but the
target column has been defined as GENERATED ALWAYS.

参照《包含生成列的 DB2 表上的数据移入和移出 — 入门》,用以下语句来导入数据:

db2 "import from <filename> of del|ixf modified by identityignore insert into <tablename>"
 
 
资料2
db2 import/export tool
  Contents
- 使用db2 backup指令备份
- 使用db2 restore指令恢复
- 使用db2look提取数据库结构DDL
- 用于数据移动的文件格式
- 使用db2move导出全部数据
- 使用db2 export指令导出数据
- 使用db2move导入(import)数据
- 使用db2 import指令导入数据
  使用db2 backup指令备份
  首先关闭所有到数据库的连接,将数据库置为“静默”状态:
$ db2 connect to testdb user db2inst1 using thepasswd
$ db2 quiesce database immediate force connections
$ db2 connect reset
  现在可以开始备份了:
$ db2 backup database testdb to “/home/backup” user db2inst1 using thepasswd
  解除数据库的“静默”状态:
$ db2 connect to testdb user db2inst1 using thepasswd
$ db2 unquiesce database
$ db2 connect reset
  说明:
1, 以上指令将会把数据库testdb备份到指定目录 /home/backup下,所以请确保当前登陆用户(db2inst1)对该目录有读写的权限。
题外话,若打算使用root用户来执行备份,请先编辑文件 /etc/group,将root用户加入到与DB2相关的几个组:db2grp1, db2fgrp1, dasadm1.
2, 生成的备份文件名如下:
TESTDB.0.db2inst1.NODE0000.CATN0000.20050131205259.001
  使用db2 restore指令恢复
  相同库名恢复:
$ db2 restore database testdb from “/home/backup”
说明:
这将会从指定的位置恢复数据库testdb。
  不同库名恢复:
$ db2 restore database testdb from “/home/backup” into testdb_new
说明:
这个指令将会建立一个新库,名为testdb_new,其结构、内容来自原先testdb的备份。
  使用db2look提取数据库结构DDL
  提取DDL
$ db2look –d testdb –a –e –x –o testdb.sql
参数的含义与用法请参考db2look的help.
  编辑得到的DDL文件
使用db2look得到的DDL文件无法直接使用,因为其中存在一些与当前系统相关的特殊信息,所以需要对该文件进行编辑。共有几个方面:
1, 去掉文件头、尾的指令:
CONNECT TO TESTDB;
COMMIT WORK;
CONNECT RESET;
TERMINATE;
位于这几句指令之间的就是定义该数据库的DDL语句,去掉这几句话让这个文件变成一个纯粹的DDL文件,另外,有时候很容易发生DB2指令执行错误,将四句指令放到文件外手动执行更有助troubleshooting.
2, 去掉schema name.
在本案例中schema name是db2inst1。因为在进行异种平台的数据移动的时候会发生schema name的变化,最常见的就是从UNIX类系统迁移到Windows平台的时候,它缺省的schema name分别为db2inst1, db2admin.
3, 去掉全部引号
此经验主要来自Oracle,一个object,定义它的时候,使用了引号与没有使用引号是两个不同的object.
4, 去掉create table语句中指定的tablespace
这个原因与2类似,在数据移动的过程中,tablespace name发生变化是很经常的事情,所以不要指定,让(不同的)系统自己决定。
有一点非常重要,需要强调,若存在比较大的字段,就必须创建pagesize比较大的bufferpool,在创建一个tablespace使用该bufferpool。
  用于数据移动的文件格式
  这个部分简单介绍一下用于DB2数据移动的文件格式,共有四种:
  1. ASC
非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。例如:
  10 Head Office 160 Corporate New York
15 New England 50 Eastern Boston
20 Mid Atlantic 10 Eastern Washington
38 South Atlantic 30 Eastern Atlanta
42 Great Lakes 100 Midwest Chicago
51 Plains 140 Midwest Dallas
66 Pacific 270 Western San Francisco
84 Mountain 290 Western Denver
  2. DEL
定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行中的列值由列定界符分隔。文件类型修饰符可用于修改这些定界符的默认值。例如:
  10,"Head Office",160,"Corporate","New York"
15,"New England",50,"Eastern","Boston"
20,"Mid Atlantic",10,"Eastern","Washington"
38,"South Atlantic",30,"Eastern","Atlanta"
42,"Great Lakes",100,"Midwest","Chicago"
51,"Plains",140,"Midwest","Dallas"
66,"Pacific",270,"Western","San Francisco"
84,"Mountain",290,"Western","Denver"
  3. WSF
work sheet format,工作表格式,用于与Lotus系列的软件进行数据交换。
  4. PC/IXF
集成交换格式(Integration Exchange Format,IXF)数据交换体系结构的改编版本,由一些列可变长度的记录构成,包括头记录、表记录、表中每列的列描述符记录以及表中每行的一条或多条 数据记录。PC/IXF 文件记录由包含了字符数据的字段组成。
  使用db2move导出全部数据
  db2move是一个集成式的数据移动工具,它支持导出(export)、导入(import)、装入(load)三种操作方式。其实db2move的这三种工作方式分别是通过简单使用db2 export, db2 import, db2 load指令来完成的。
  此部分仅仅介绍其export功能,import和load将在稍后的部分介绍。使用db2move导出的数据文件格式是IXF。
  建立并进入数据存放目录:
$ mkdir /home/backup/mydata
$ cd /home/backup/mydata
  导出指定的数据库中的全部数据:
$ db2move testdb export –u db2inst1 –p thepasswd
  说明:
1,这将会把数据库testdb中的全部数据提取到当前目录(/home/backup/mydata)中。每个表的内容都存储在一 个.ixf文件中,每 个.ixf文件都有一个与之相对应的.msg文件,.msg文件是描述从表中导出数据时的信息的。另外还有两个文件,db2move.lst用来记 录.ixf文件、.msg文件与表的一一对应关系,EXPORT.out记录的是导出数据时的屏幕输出。
2,有关db2move指令更多的细节,请直接执行该指令,将会打印出其帮助信息。
  使用db2 export指令导出数据
  与上面提到的db2move的export功能不同,db2 export是一个更加细致的导出工具,它支持三种数据文件格式:DEL, WSF, IXF.
  以下示范将数据库testdb中表mytbl的数据导出,存储在目录 /home/backup 下。
  建立到数据库的连接:
$ db2
db2 => connect to testdb user db2inst1 using thepasswd
  以DEL格式导出:
db2 => export to /home/backup/mytbl.txt of del select * from mytbl
  以IXF格式导出:
db2 => export to /home/backup/mytbl.ixf of ixf select * from mytbl
注:若需要记录导出过程中的message,使用:
db2 => export to /home/backup/mytbl.ixf of ixf messages /home/backup/mytbl.msg select * from mytbl
  断开连接:
db2 => connect reset
db2 => quit
$
  更多有关db2 export的帮助,请:
$ db2 ? export
  使用db2move导入(import)数据
  以db2inst1用户身份登录到Host 2。
  创建数据库mytestdb:
$ db2
db2 => create database mytestdb on ‘/home/db2inst1’ using codeset UTF-8 territory CN
db2 => connect to mytestdb user db2inst1 using thepasswd
  创建一个pagesize为16K的bufferpool,名为mybigpool:
db2 => create bufferpool mybigpool immediate size 1000 pagesize 16K
  创建一个tablespace使用上面创建的bufferpool,名为mybigspace:
db2 => create regular tablespace mybigspace pagesize 16K managed by system using (‘/home/db2inst1/db2inst1/NODE0000/SQL00004/SQLT0003.0’) extentsize 16 overhead 12.67 prefetchsize 16 transferrate 0.18 bufferpool mybigpool dropped table recovery off
  注:
extentsize, overhead, prefetchsize, transferrate这几个参数值与所使用的服务器有关,我这里使用的值是基于普通的、使用SCSI硬盘的PC服务器的。
  完成空库的创建:
db2 => commit work
db2 => connect reset
db2 => terminate
  导入(import)数据:
使用import方式不需要先建表结构,即,准备好一个空库就行了。这一点与load方式不一样,load方式需要先建立表结构。
我将从Host1上导出的全部数据文件(位于Host1的 /home/backup/mydata下)复制到Host2下某个目录下,假定为 /home/movedata
$ cd /home/movedata
$ db2move mytestdb import –u db2inst1 –p thepasswd
此时屏幕上会显示有关导入数据的信息。
  存在的问题:
db2move import方式只能导入“普通”的表,如果表中存在自增长的IDENTITY列,那么使用db2move import时,会出错。这是因为,如果IDENTITY列创建表的时候都是定义成always的话,那么在导入数据的时候该列数据是不能被赋值的,而是 应该由系统生成,使用db2move无法导入这样的表。对于这种含有IDENTITY列的表,只能使用db2 import指令来进行导入,相关的参数是IDENTITYIGNORE,IDENTITYMISSING。我将在下一部分给出具体的指令操作。
一句题外话:
如果需要实现唯一主键,可以不必使用IDENTITY列,改而使用sequence,这样比较便于维护和管理。
  使用db2 import指令导入数据
  import和export是一对存在对应关系的指令,有一点不同的是,import支持四种格式:ASC, DEL, WSF, IXF, 而export只支持三种(见上面相应部分的描述)。
  以下示范将数据文件/home/movedata/mytbl.ixf导入到数据库mytestdb中。
$ db2
db2 => connect to mytestdb user db2inst1 using thepasswd
db2 => import from /home/movedata/mytbl.ixf of ixf insert into mytbl
db2 => commit work
db2 => connect reset
db2 => quit
$
  在上一部分,我有提到,若表中存在自增长的IDENTITY列,需要使用相应的参数才能导入,比如:
db2 => import from /home/movedata/mytbl2.ixf of ixf modified by identityignore insert into mytbl2
  更多有关db2 import的帮助,请:
$ db2 ? import
  Appendix
  [iyunv@tiv06 root]# uname -a
Linux tiv06.cn.ibm.com 2.4.9-e.57 #1 Thu Dec 2 20:56:19 EST 2004 i686 unknown
  [iyunv@tiv06 root]# cat /etc/redhat-release
Red Hat Linux Advanced Server release 2.1AS (Pensacola)
  [db2inst1@tiv06 db2inst1]$ db2level
DB21085I Instance "db2inst1" uses "32" bits and DB2 code release "SQL08010" with level identifier "01010106".
Informational tokens are "DB2 v8.1.0.0", "s021023", "", and FixPak "0".
Product is installed at "/opt/IBM/db2/V8.1".
  [iyunv@sea root]# uname -a
Linux sea.cn.ibm.com 2.4.21-20.ELsmp #1 SMP Wed Aug 18 20:46:40 EDT 2004 i686 i686 i386 GNU/Linux
  [iyunv@sea root]# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 3 (Taroon Update 3)
  [db2inst1@sea db2inst1]$ db2level
DB21085I Instance "db2inst1" uses "32" bits and DB2 code release "SQL08020" with level identifier "03010106".
Informational tokens are "DB2 v8.1.0.64", "s040812", "MI00086", and FixPak "7".
Product is installed at "/opt/IBM/db2/V8.1".
  Reference
none

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-299582-1-1.html 上篇帖子: [转载]db2 code 下篇帖子: DB2 Quick Start In 3 Minutes
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表