#!bin/bash
#Mysql数据批量导出
#数据库名
DB='database'
#为了保护账户密码的安全性,在建立配置文件的时候可以创建为隐藏文件,并且为文件设置权限为400
#jdbc 将用户相关信息放到一个配置文件中,截取用户配置文件中的第二行
Url=$(sed -n '2,2p' /home/test/mysql.config)
#用户名
username=$(sed -n '4,4p' /home/test/mysql.config)
#密码
password=$(sed -n '6,6p' /home/test/mysql.config)
#将需要导入的表名直接放到一个文件中
table_name=$(cat /home/test/mysql_table.txt)
#记录任务开始时间
start_time=$(date +'%Y-%m-%d %H:%M:%S')
for var in ${table_name}
do
echo "===========db:$DB,table:$var 导入 ============="
echo "$(sqoop import --connect ${Url} --username ${username} --password ${password} \
-m 1 --hive-delims-replacement ' ' \
--table ${var} \
--target-dir /user/test/${var} \
--fields-terminated-by '\001' \
--delete-target-dir)"
if [ $? -eq 0 ]
then echo "================ import ${var} successfully ! ==============="
else echo "================ import ${var} failed ! ==============="
fi
done
#任务开始时间转化为秒单位
start_seconds=$(date --date="${start_time}" +%s);
#任务执行结束时间
end_seconds=$(date --date="${end_time=$(date +'%Y-%m-%d %H:%M:%S')}" +%S);
#任务执行总时间
run_time=$((${end_seconds}-${start_time}))
#输出任务执行时间到前台
echo -e "\033[32mSqoop写入HDFS任务完成,总用时:$(date -ud "@${run_time}" +%H小时%M分%S秒\033[0m"