[Author]: kwu
Sqoop处理Clob与Blob字段,在Oracle中Clob为大文本,Blob存储二进制文件。遇到这类字段导入hive或者hdfs需要特殊处理。
1、oracle中的测试表
- CREATE TABLE
- T_LOB
- (
- A INTEGER,
- B CLOB,
- C BLOB
- )
测试数据
- insert into T_LOB (A, B, C) values (1, 'clob测试',to_blob('3456'));
2、sqoop脚本
- import
- --append
- --connect
- jdbc:oracle:thin:@localhost:1521/orcl
- --username
- wuke
- --password
- Abcd1234
- --table
- BDC_TEST.T_LOB
- --columns
- "A,B,C"
- --target-dir
- /tmp/t_lob
- -m
- 1
- sqoop --options-file ./importHdfs.opt
3、查看生成的HDFS文件
可以看出,clob的字段是导入到hdfs上是正常显示文本,blob是二进制文件导出到hdfs上显示为16进制
16进制转换为string可采用如下方法,实际上通过移位操作来实现:
- package com.ganymede.test;
- /**
- * 十六进制的转换操作
- * @author Ganymede