sqoop全量导入数据,从Oracle迁移hive
#!/bin/bash
#sqoop执行路径
export sqoop_path=/usr/hdp/2.6.5.0-292/sqoop/bin
#hive执行路径
export hive_path=/usr/hdp/2.6.5.0-292/hive2/bin
#自定义的日志输出文件
export sqoop_logs=/var/log/sqoop.log
#
if [ ! -e ${sqoop_path} ] || [ ! -e ${hive_path} ]
then
exit
else
echo "Directory exists !" >> $sqoop_logs
fi
#
#oracle数据库默认用户下的表
array_default=(GIS_DATA_DAY GIP_DATA_DAY CUSTOMER_REPUTATION_FILE GRADE_CABLE \
CD_DATA_BTACH CD_DATA_UNQUALIFIED CD_TH_DATA CD_HW_DATA GRADE_CABLE_BL)
#
#oracle数据库gis用户下的表
array_GIS=(jd_building_sw jd_equip_swcode jd_maintenace jd_physics_community \
jd_sub_shelf jd_customer_record)
#
#连接配置
oracle_driver=jdbc:oracle:thin:@10.62.11.108:1215:jd
username=jd
password=Dbht_jd60
#
#
for tables in ${array_default[@]}
do
${hive_path}/hive -e "drop table if exists ${tables}"; #判断表在hive中是否存在,存在就删除,
${sqoop_path}/sqoop import --connect ${oracle_driver} --username ${username} --password ${password} --table ${tables} \
--fields-terminated-by "\t" --lines-terminated-by "\n" --hive-drop-import-delims --hive-import --hive-overwrite \
--create-hive-table --hive-table ${tables} --null-string '\\N' --null-non-string '\\N' --delete-target-dir -m 1; #sqoop 抽取数据,这里全表抽取
if [ $? -ne 0 ]; then #判断sqoop执行结果,失败退出
exit
else
echo "Successfully !" >> $sqoop_logs
fi
done
#
#
for gis_tables in ${array_GIS[@]}
do
${hive_path}/hive -e "drop table if exists ${gis_tables}"; #判断表在hive中是否存在,存在就删除,
${sqoop_path}/sqoop import --connect ${oracle_driver} --username ${username} --password ${password} \
--query "select * from gis.$gis_tables where 1=1 and $CONDITIONS" --target-dir /user/hive/${gis_tables} \
--fields-terminated-by "\t" --lines-terminated-by "\n" --hive-drop-import-delims --hive-import --hive-overwrite \
--create-hive-table --hive-table ${gis_tables} --null-string '\\N' --null-non-string '\\N' --delete-target-dir -m 1; #sqoop 抽取数据,这里全表抽取
if [ $? -ne 0 ]; then #判断sqoop执行结果,失败退出
exit
else
echo "Successfully !" >> $sqoop_logs
fi
done