使用tdt1.4迁移blob文件到inceptor

  第三方对接
内容纲要

概要描述


transporter组件是星环出品的一款数据etl工具,支持从不同数据源获取数据,对数据的复杂转换操作,并最终将数据落地成不同格。

  • 对于CLOB,如xml文本;BLOB,如jpg图片,tdt可以直接迁移到inceptor表。本文我们介绍如果使用tdt迁移Oracle中带blob字段的图片到相应的inceptor表。

详细说明


1. 上传图片,并对用户添加Utl_file权限

--定义生成文本的路径
> create or replace directory "FILEPATH" as '/home/oracle';
> grant read,write on directory FILEPATH to lkw;
> grant execute on utl_file to lkw;
--上传测试图片test_blob.jpg到对应的/home/oracle路径下,注意权限和属主
[oracle@321ed4c22025 /]$ ll /home/oracle/
total 244
drwxr-xr-x. 1 oracle oinstall     20 Aug 27  2014 app
-rw-r--r--. 1 oracle oinstall 246242 Sep 10 12:22 test_blob.jpg
[oracle@321ed4c22025 /]$ 

2. 新建一张包含blob类型字段的普通表

> drop table SY_QRTZ_JOB_DETAILS;
> create table SY_QRTZ_JOB_DETAILS (id int , name varchar2(255),JOB_DATA blob) ;

3. dbms_lob.loadfromfile方式加载blob数据

--导入
DECLARE
  v_srcFile  bfile;
  b_lob  BLOB;
BEGIN
  --return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中
  INSERT INTO SY_QRTZ_JOB_DETAILS
    (id, name, JOB_DATA)
  VALUES
    (1, 'A', empty_blob()) RETURN JOB_DATA INTO b_lob;
  --将文件转换为bfile
  v_srcFile := bfilename('FILEPATH', 'test_blob.jpg');
  dbms_lob.open(v_srcFile , dbms_lob.file_readonly);
  -- 将b_file中的内容转换到b_lob
  dbms_lob.loadfromfile(b_lob, v_srcFile , dbms_lob.getlength(v_srcFile));
  dbms_lob.close(v_srcFile);
  COMMIT;
END;
/
--检查图片是否正常展示
> select * from SY_QRTZ_JOB_DETAILS;

file

4. inceptor中创建对应表

> CREATE TABLE test_blob02
    (
        ID INT ,
        NAME STRING,
        JOB_DATA BINARY
    );

5. transport组件定义数据流

JDBC READER:
file
INCEPTOR_WRITER
file

调试模式执行成功

file

后台实际的逻辑如下:
file

6. inceptor中执行查询

> SELECT * FROM test_blob02;

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。