在使用Sqoop的导入RDBMS数据到Hive的过程中,常常会遇到1种情况,那就是某个字段的类型是Blob或Clob这样的大文本类型,如果直接使用Sqoop进行导入的话,会发现无法正常导入。
这里,我们以 PostgreSQL 数据库作为例子,进行相关问题的说明:
create table test (id serial primary key,content bytea);
insert into test values (1,E'\\0344\\0270\\0255\\0345\\0233\\0275\\0344\\0272\\0272');
insert into test values (2,E'\\0345\\0203\\0217\\0351\\0243\\0216\\0344\\0270\\0200\\0346\\0240\\0267\\0345\\0255\\0230\\0345\\0234\\0250');
insert into test values (3,'世界你好');
在这里,我们创建了1张test的表,其中字段ID为主键并自增,而content是字节数组,即所谓的Blob类型。
而在插入记录的时候,我们可以使用E转义符号进行字节的转义,将对应的8进制数据插入到 数据库 中。当然也可以直接插入字符串,PostgreSQL会进行相关的转换操作。
其结果类似如下:
id | content
----+----------------------------------------------------------------------------
1 | \x1c34173015351c35133317351c3417321732
2 | \x1c35103311371d31143311361c34173010301c36143016371c35153513301c3513341530