#脚本头文件
#!/bin/bash
#判断第二个参数是否为空,如果不为空就赋值输入日期,
#如果为空就赋值当前日期减去一条日期
if [-n "$2"]; then
do_date=$2
else
do_date=$(date -d '-1 day'+%F)
fi
#sqoop导入命令
import_data(){
/opt/module/sqoop/bin/sqoop import \
#mysql连接参数
--connect jdbc:mysql://dt100:3306/bysj \
--username root \
--password 123123 \
#导入条件的sql语句
$CONDITIONS相当于是占位符,sqoop通过他来获取分片信息,应该由一个map读取多少条数据。
--query "$2 and \$CONDITIONS" \
#导入到hdfs上的位置
--target-dir=/test/$1/$do_date \
#如果位置文件存在就删除
--delete-target-dir \
#并行度为一,也就是一个map任务执行
--num-mappers 1 \
#指定切割符
--fields-terminated-by '\t' \
#mysql的空值为Null,hdfs的空值为\N(此参数就是转换的)
--null-string '\\N' \
--null-not-string '\\N'
}
#导入方法
import_blog(){
调用sqoop导入命令,同时传入两个参数
import_data blog "select id,title from blog where 1=1"
}
#判断调用导入方法
case $1 in "yes")
import_blog
;;
"no")
;;
esac