从Oracle导入数据到Hive中
查看oracle中的数据及数据类型
select * from t1;
select * from aa10;
Oracle字段类型
需要注意的是:oracle中的字段类型不一定适用于Hive中,需要转换成Hive适用的字段类型,否则会报错。
例如:Number–>DECIMAL
···
Hive字段类型
Hive脚本语句
创建表(也可以直接导入数据不创建表)
create table default.table1 //库名.表名
(AAA100 STRING COMMENT '', AAA101 STRING COMMENT'', AAA102 STRING COMMENT '' , AAA103 STRINIG COMMENT '' , AAA105 STRING COMMENT '', EAA236 DECIMAL(6) COMMENT '', AAA052 STRING COMMENT '' , AAA027 STRING COMMENT '', AAE013 STRING COMMENT '') //字段名
COMMENT '测试表'
row format delimited fields terminated by '\001' lines terminated by '\n';
导入数据(如果表不存在会自动创建)
sqoop import
--hive-import --hive-database default //选择hive 库
--hive-overwrite //是否覆盖
--connect jdbc:oracle:thin:@//10.228.1.56:1521/SBEXG --username sjjh_cx --password sjjh_cx -m 1 // 链接参数
--delete-target-dir --target-dir sv_zca2_20191016 //hive会先导到缓存表,所以先删除
--hive-table sv_zca2_20191016 //表名
--query "SELECT RYXXID, XM, SFZHM, PJRQ, SXRQ, PJLX, PXN, PXY, SFHX, HXN, HXY , AH, AAZ002, AAZ400 , LAST_MODIFY_TIME, OPERATION FROM SJJH.sv_zca2 WHERE \$CONDITIONS" // sql语句
--hive-drop-import-delims --input-null-string 'null' --input-null-non-string 'null' --null-string '\\N' --null-non-string '\\N' --fields-terminated-by '\001' --lines-terminated-by '\n'; // 处理NULL的情况
完整的Hive脚本
sqoop import --hive-import --hive-database default --hive-overwrite --connect jdbc:oracle:thin:@//10.228.1.56:1521/SBEXG --username sjjh_cx --password sjjh_cx -m 1 --delete-target-dir --target-dir sv_zca2_20191016 --hive-table sv_zca2_20191016 --query "SELECT RYXXID, XM, SFZHM, PJRQ, SXRQ, PJLX, PXN, PXY, SFHX, HXN, HXY , AH, AAZ002, AAZ400 , LAST_MODIFY_TIME, OPERATION FROM SJJH.sv_zca2 WHERE \$CONDITIONS" --hive-drop-import-delims --input-null-string 'null' --input-null-non-string 'null' --null-string '\\N' --null-non-string '\\N' --fields-terminated-by '\001' --lines-terminated-by '\n';
执行脚本
打开链接工具:SSH Secure Shell (你们随意)
su hdfs 切换用户
输入脚本语句 执行即可
接着去hive中查看成果就可以啦。