sqoop从oracle导入hive分区,使用sqoop从hive导入oracle报错

新建shell脚本 hive2oracle.sh

#!/bin/bash

sqoop export --connect jdbc:oracle:thin:@//10.10.10.10:1521/DB --username user --password 123456 --table DB.TT_REPAIR_PART -m 4 --input-fields-terminated-by '\t' --export-dir /user/hive/dws_tt_repair_part --input-null-string '\\N' --input-null-non-string '\\N' --columns=RSSC_NAME,RSSC_CODE,SST_NAME,SST_CODE,PROVINCE_ID,PROVINCE_NAME,CITY_ID,CITY_NAME,BILL_DATE,CALL_AMOUNT,TECH_AMOUNT

新建workflow

d01ccea6615af40eb952476ae63d9036.png

执行脚本报错:

Caused by: java.io.IOException: java.sql.SQLException: ORA-12899: value too large for column "DACU"."TT_REPAIR_PART"."SST_NAME" (actual: 51, maximum: 50)

at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:233)

at org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:46)

at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.write(MapTask.java:664)

at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89)

at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.write(WrappedMapper.java:112)

at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:90)

... 10 more

查看日志SST_NAME字段超过限制!

于是修改oracle表字段长度:

CREATE TABLE TT_REPAIR_PART

(

RSSC_NAME VARCHAR2(100),

RSSC_CODE VARCHAR2(10),

SST_NAME VARCHAR2(100),

SST_CODE VARCHAR2(8),

PROVINCE_ID VARCHAR2(10),

PROVINCE_NAME VARCHAR2(50),

CITY_ID VARCHAR2(10),

CITY_NAME VARCHAR2(50),

BILL_DATE VARCHAR2(8),

CALL_AMOUNT NUMBER,

TECH_AMOUNT NUMBER

);

重新执行脚本OK了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值