sqoop Oracle 导入到hive 日期时间消失

sqoop脚本:

复制代码
sqoop import -D mapred.job.queue.name=highway \
-D mapreduce.map.memory.mb=4096 \
-D mapreduce.map.java.opts=-Xmx3072m \
--connect "jdbc:oracle:thin:@//localhost:61521/LZY2" \
--username LZSHARE \
--password '123456' \
--query "SELECT 
    TO_CHAR(GCRQ, 'YYYY') AS gcrq_year,
    TO_CHAR(GCRQ, 'MM') AS gcrq_month,
    TO_CHAR(GCRQ, 'DD') AS gcrq_day,
    YEAR,
    TO_CHAR(GCRQ, 'YYYY-MM-DD HH24:MI:SS') AS GCRQ,
    ........
    TO_CHAR(DELETE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS DELETE_TIME,
    CREATE_BY,
    TO_CHAR(CREATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS CREATE_TIME,
    UPDATE_BY,
    TO_CHAR(UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS UPDATE_TIME,
    TO_CHAR(INSERT_TIME, 'YYYY-MM-DD HH24:MI:SS') AS INSERT_TIME
	FROM LZJHGX.dat_dcsj_time
WHERE TO_CHAR(GCRQ , 'YYYY-MM-DD') < TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND \$CONDITIONS" \
--split-by sjxh \
--hcatalog-database dw \
--hcatalog-table ods_pre_dat_dcsj_time \
--hcatalog-storage-stanza 'stored as orc' \
--num-mappers 20

其中query语句在Oracle中执行时,日期时间都是完整保留的。

但是执行完毕查看hive,却发现日期时间字段都是为NULL。

但如果不做tochar转换会报错:

Error: java.lang.ClassCastException: java.sql.Timestamp cannot be cast to org.apache.hadoop.hive.common.type.Timestamp

那么换个解决思路,将hive表中的timestamp字段改为string类型,这样修改后成功解决。

相关推荐
曹牧4 小时前
PL/SQL:xml数据
oracle
架构师老Y5 小时前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构
Leon-Ning Liu6 小时前
Oracle 26ai新特性:时区、表空间、审计方面的新特性
数据库·oracle
Yushan Bai7 小时前
ORACLE数据库在进行DROP TABLE时失败报错ORA-00604问题的分析处理
数据库·oracle
XDHCOM10 小时前
ORA-31215: DBMS_LDAP PL/SQL无效LDAP修改值,Oracle报错故障修复与远程处理方案,快速解决连接配置难题
数据库·sql·oracle
betazhou13 小时前
记一次Oracle REDO在线日志损坏故障修复
数据库·oracle·redo·ora-00600
老苏畅谈运维14 小时前
DBA分析 ORA 报错的利器,errorstack让 Oracle 错误现原形
数据库·oracle·dba
大江东去浪淘尽千古风流人物14 小时前
【Basalt】nfr_mapper 中的“小 SfM/BA 后端”
c++·人工智能·计算机视觉·oracle·augmented reality
曹牧1 天前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
jnrjian1 天前
text index 查看index column index定义 index 刷新频率 index视图
数据库·oracle