如何复制BLOB的数据类型_第1页
如何复制BLOB的数据类型_第2页
如何复制BLOB的数据类型_第3页
如何复制BLOB的数据类型_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、标题如何将DB2数据库中的大对象(BLOB,CLOB)数据类型复制到Oracle数据库中 环境Windows, db2 8.2, Websphere information integrator 8.2(以下简称WII)问题描述WII中对LOB对象的复制支持仅限于DB2的数据库。具体的限制请参考:对非DB2数据库的数据复制, 不直接支持LOB(BLOB,ClOB)等大对象数据类型,但在实际应用中,用户需要复制的表中有可能有BLOB等大对象数据,如果数据目标为Oracle,这类大对象复制的需求可通过对WII的复制进行特殊配置实现。下面以一个实际的例子来说明如何将DB2中的BLOB数据类型复制到O

2、racle中。解答基本思路:通过WII的联邦能力,先把DB2数据源表中的非BLOB字段复制到目标表中,对于 BLOB字段,在每个复制周期完成后,增加一个对目标记录BLOB字段的update操作,直接把数据源的BLOB数据更新到数据目标的BLOB数据中。其中的关键步骤就是如何区分在数据目标表中,哪些记录需要更新,哪些不需要更新。为解决这个问题,可以在数据目标表上增加一个标志字段flag,该字段对应复制处理的计算字段,赋为常量值“1”, 然后在更新数据目标BLOB字段的Update语句的Where条件中使用此标志字段进行比较,flag 为“1”的记录则进行变量BLOB更新,在更新BLOB数据的同时

3、,将该标志字段置为非“1”的值,以避免重复更新。具体的解决步骤:1)假设有一个需要进行复制的DB2源表EMP_PHOTO 有以下3个字段,其中主键为(EMPNO, PHOTO_FORMAT)DB2 CREATE TABLE EMP_PHOTO ( EMPNO CHAR(6) NOT NULL , PHOTO_FORMAT VARCHAR(10), PICTURE BLOB(102400) , PRIMARY KEY (EMPNO, PHOTO_FORMAT) )2)采用跟普通复制相同的步骤,分别在DB2源数据库中创建Capture控制表,在目标数据库Oracle中创建Apply控制表。3)将E

4、MP_PHOTO表注册到复制的数据源中。4)定义从数据源EMP_PHOTO到Oracle目标表的预定集,假设Oracle中使用的目标表名称为REP.TGEMP_PHOTO,同时在DB2中产生的目标表的昵称为ORA817.TGEMP_PHOTO。5)将EMP_PHOTO添加到复制成员中,同时增加计算列flag,将其设置为常量值“1”,生成执行脚本并运行。添加计算列的过程如下图所示: 点击“添加计算列”按钮:在目标列中,输入这个计算列的名称:FLAG,同时将这个计算列指定成常量1,生成相应的脚本,并运行。这样目标表中就多了一个值为常量“1”的 flag 字段。6)在Oracle中复制的目标表为tg

5、emp_photo, 其昵称为ora817.tgemp_photo。由于WII不直接支持BLOB字段类型,所以ora817.tgemp_photo中没有BLOB字段,我们需要手动的在目标表中添加这个列。在目标表中增加BLOB字段:set passthru ora817 ;ALTER TABLE REP.TGEMP_PHOTO ADD(PICTURE BLOB );set passthru reset;由于昵称 ora817.tgemp_photo已经存在了,但是目标表的结构已经发生了变化,因此我们需要为复制的目标表重新创建昵称,使其包含BLOB列:drop nickname ora817.tg

6、emp_photo;create nickname ora817.tgemp_photo for ora817.REP.TGEMP_PHOTO;完成后,目标tgemp_photo表结构如下:EMPNO CHAR(6) not null, PHOTO_FORMAT VARCHAR(10)FLAGintegerPICTURE BLOB(102400) 在预定集属性中增加对BLOB字段更新的update语句:UPDATE ora817.tgemp_photo T SET (flag, picture) = (SELECT 0, picture FROM emp_photo S WHERE S.emp

7、no = T.empno and S. photo_format =T. photo_format and flag = 1);注意,这里的(empno, photo_format)是表的主键,Where条件中对标志字段进行比较,对flag为“1”的记录,将进行picture字段的BLOB更新,在更新BLOB数据的同时,将该标志字段置为非“1”的值,如“0”,以避免重复更新。另外,要在SQLSTATE栏中添加02000,以允许返回空行。该错误号代表的具体信息为:SQLSTATE 02000: 发生下述异常之一:SELECT INTO 语句或 INSERT语句的子查询的结果为空表。在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。在FETCH 语句中引用的游标位置处于结果表最后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论