场景:将mysql库中的数据传输到HDFS中,并且按照日期作为文件名来存放数据,方便数据的读取与处理
如图所示:以日期来命名文件夹,存储当天的数据
首先介绍一下shell脚本中的三个引号的适用与区别
- 单引号(‘’)–所见即所得
var1=‘helloworld’
var2=’${var1}helloworld’
echo $var2输出结果:${var1}helloworld
- 双引号(“”)–识别里面的变量
输出引号中的内容,若存在命令,变量等,会先执行命令解析出结果后再输出
var1=‘helloworld’
var2=“${var1}helloworld”
echo $var2
输出结果:helloworldhelloworld
- 反引号(`)–识别命令并运行
键盘tab键上的一个键,用于命令转换
例如:root用户登录系统
var=
whoami
echo v a r 输 出 结 果 : r o o t 反 引 号 是 执 行 w h o a m i 这 个 命 令 反 引 号 和 var 输出结果:root 反引号是执行whoami这个命令 反引号和 var输出结果:root反引号是执行whoami这个命令反引号和()作用相同
下面代码为test.sh shell脚本
#! /bin/bash
set -x
#set -x用于运行shell脚本时候的调试功能,也可以不用
echo ....................Sqoop import data form:$1 to $2
#endtime='date -d "$2" +%s'
for((i=0;i<5;i++))
do
day=$(date "+%Y-%m-%d" -d "$1 $i day")
time='date -d "$day" +%s'
echo $day
if [ ${time} -gt $endtime ]
then
break
else
echo 循环成功
#RFID
sqoop import --connect jdbc:mysql://10.x.x.x:3306/cqct --username root --password root --query 'select * from bm_apoint_rfid where TIME like '\"$day%\"' and $CONDITIONS' --split-by ID --target-dir /cqct/bm_apoint_rfid/$day --num-mappers 1
fi
done
set +x