sqoop导入数据的shell脚本

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
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sqoop是一个用于在Hadoop和关系型数据库之间进行数据传输的工具。它可以将数据从关系型数据导入到Hadoop集群中,也可以将数据从Hadoop集群导出到关系型数据库中。下面是一个Sqoop数据导入导出的shell脚本示例: 1. 数据导入脚本: ``` sqoop import \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --target-dir /user/hadoop/mydata \ --m 1 ``` 这个脚本将从MySQL数据库中的mytable表导入数据,并将数据存储在Hadoop集群中的/user/hadoop/mydata目录下。其中,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导入的表名,--target-dir参数指定了数据存储的目录,--m参数指定了并行度。 2. 数据导出脚本: ``` sqoop export \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --export-dir /user/hadoop/mydata \ --input-fields-terminated-by '\t' \ --input-lines-terminated-by '\n' ``` 这个脚本将从Hadoop集群中的/user/hadoop/mydata目录中读取数据,并将数据导出到MySQL数据库的mytable表中。其中,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导出的表名,--export-dir参数指定了数据读取的目录,--input-fields-terminated-by和--input-lines-terminated-by参数指定了输入数据的分隔符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值