從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中查看成果就可以啦。