shell脚本调用sqoop时连接mysql得connect jdbc等参数如何通过变量传入控制
#!bin/bash#变量赋值
bin_name=`hadoop fs -cat /data/public/exec_info |sed -n '1p' `
hive_path=`hadoop fs -cat /data/public/exec_info |sed -n '2p' `
echo $hive_path
###账期
month_id=$1
echo $month_id
yyyymm=$1
yyyy=`echo ${yyyymm} | cut -c 1-4`;
mm=`echo ${yyyymm} | cut -c 5-6`;
yyyymm_len=`echo ${yyyymm} | wc -L`;
#账期判断
if [ "${yyyymm_len}" != "6" ] || [ ${mm} -lt 1 ] || [ ${mm} -gt 12 ]; then
echo '输入的日期[ ${yyyymm}] 不合法,请重新输入!'
exit 999
else
#mysql数据库
if [ ! $3 ]; then
echo "请指定Mysql数据库:sh $0 yyyymm hive_db_name mysql_db_name"
exit
else
mysql_db_name=$3
fi
#####清理数据
sqoop eval --connect jdbc:mysql://10.1.160.10:3306/$mysql_db_name --username root -password 123456 -query "alter table dw_out_broadcast_monthly_hz truncate partition P$month_id;"
##后面还有代码,不予展示
fi
如上得shell脚本中,连接mysql得--connect jdbc参数只能写死指定地址端口,如果将10.1.160.10地址传入参数在调用就报错,执行不过去,但是$mysql_db_name这个参数却能正常传入,同样得道理,username,password也不能参数化传入,只能写死,这样就使得代码可迁移性不高,如果换了集群或者账户密码,每次都要手动改脚本,不能通过变量传入,维护性很差
拜求各位大神指点,有没有过此类经验,请指教,请将代码附上
#!bin/bash
#变量赋值
host_ip=`hadoop fs -cat /data/public/exec_info |sed -n '6p' `
host_port=`hadoop fs -cat /data/public/exec_info |sed -n '7p' `
username=`hadoop fs -cat /data/public/exec_info |sed -n '8p' `
password=`hadoop fs -cat /data/public/exec_info |sed -n '9p' `
#mysql数据库
if [ ! $1 ]; then
echo "请指定Mysql数据库:sh $0 yyyymm hive_db_name mysql_db_name"
exit
else
mysql_db_name=$1
fi
#host_ip='10.1.70.149'
#host_port='3306'
echo $host_ip
echo $host_port
#####清理数据
sqoop eval --connect jdbc:mysql://$host_ip:$host_port/$mysql_db_name --username $username -password $password -query "select * from avm_bmm_ledger_character;"
解决了,谢谢 本帖最后由 BB_BDATA 于 2018-4-24 11:19 编辑
$ hadoop fs -cat /data/public/exec_info
/home/ygjheq/hive/bin/hive
/user/hive2/warehouse
/home/ygjheq/agate_dm
/usr/bin/mysql -h 10.140.1.3 -u root -proot123
/usr/bin/mysql -h 10.140.1.3 -u root -proot123
10.1.160.10
3306
root
123456
$
6-9行用于配置sqoop得参数配置
页:
[1]