sqoop常用命令(汇总)

oracle导入到hdfs(rowid字段)

工作中经常使用sqoop导入数据到hdfs上,由于oracle表中有些字段包括/t/r/n等特殊字符,为了数据不出现错位,解析失败等情况,我们采用parquet压缩格式(其中时间存为 "yyyy-mm-dd hh24:mi:ss.ff"格式)

sqoop import \
--connect jdbc:oracle:thin:@//IP:1521/ASMP2 \
--username <username> \
--password <password> \
--query "SELECT rowidtochar(rowid) as row_id,t.id,t.content_code,t.content_name,t.price_type,t.oli_type,t.content_status,t.creat_by,to_char(t.creat_time,'yyyy-mm-dd hh24:mi:ss.ff') creat_time FROM SBPOPT.TT_PD_SERVICE_SONTENT t where \$CONDITIONS" \
--delete-target-dir \
--target-dir /user/hive/warehouse/tt_pd_service_sontent \
--split-by ID \
--as-parquetfile \
-m 1 

oracle导入到hdfs(parquet格式)

如果分区字段是日期类型还需要特殊处理"to_char(creat_time,‘yyyy’)"

sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true"\
--connect jdbc:oracle:thin:@//IP:1521/ASMP2 \
--username <username> \
--password <password> \
--query "SELECT rowidtochar(rowid) as row_id,t.id,t.content_code,t.content_name,t.price_type,t.oli_type,t.content_status,t.creat_by,to_char(t.creat_time,'yyyy-mm-dd hh24:mi:ss.ff') creat_time FROM SBPOPT.TT_PD_SERVICE_SONTENT t where \$CONDITIONS" \
--delete-target-dir \
--target-dir /user/hive/warehouse/tt_pd_service_sontent \
--split-by to_number(to_char(creat_time,'yyyy')) \
--as-parquetfile \
-m 8 

HDFS导出到oracle(text格式)

针对特殊字符进行处理,比如NULL

sqoop export 
--connect jdbc:oracle:thin:@//IP:1521/SVWOT  
--username <username> 
--password <password> 
--table DACU.TT_TEST 
--input-fields-terminated-by '\t' 
--export-dir /user/asmp/hive/test
--input-null-string '\\N' 
--input-null-non-string '\\N' 
--columns=RSSC_CODE,PROVINCE_CODE,CITY_CODE,SST_CODE,DATE_YM,SERIES_CODE,MODEL_CODE,CAR_NUMBER_YEAR,CAR_NUMBER_MONTH,CREATE_DATE
-m 1 

HDFS导出到oracle(parquet格式)

parquet存储格式的Hive表,导入到Oracle

sqoop export 
--connect jdbc:oracle:thin:@//IP:1521/SVWOT  
--username <username> 
--password <password> 
--table DACU.TT_TEST 

hive分区表导出到oracle(text格式)

sqoop export 
--connect jdbc:oracle:thin:@//IP:1521/SVWOT  
--username <username> 
--password <password> 
--table DACU.TT_TEST 
--input-fields-terminated-by '\t' 
--export-dir /user/asmp/hive/test_table/partition_date=2020
--input-null-string '\\N' 
--input-null-non-string '\\N' 
--columns=RSSC_CODE,PROVINCE_CODE,CITY_CODE,SST_CODE,DATE_YM,SERIES_CODE,MODEL_CODE,CAR_NUMBER_YEAR,CAR_NUMBER_MONTH,CREATE_DATE 
-m 1 

注意事项:
生产环境中存在,sqoop导入数据识别不了(结果为NULL)的情况,需要专门监控系统,检测文件是否生成,数量是否一致,内容是否为NULL(也可以从应用端检测是否生成结果,如果持续几天结果都是空则可以判断是源端数据表出现问题)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值