分享

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也不能参数化传入,只能写死,这样就使得代码可迁移性不高,如果换了集群或者账户密码,每次都要手动改脚本,不能通过变量传入,维护性很差
拜求各位大神指点,有没有过此类经验,请指教,请将代码附上

已有(2)人评论

跳转到指定楼层
BB_BDATA 发表于 2018-4-24 11:02:50
#!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:18:38
本帖最后由 BB_BDATA 于 2018-4-24 11:19 编辑

[ygjheq@BJ-DBL-ZYC1Q-CSDMZ-YGJHEQ-SV001 gml]$ 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
[ygjheq@BJ-DBL-ZYC1Q-CSDMZ-YGJHEQ-SV001 gml]$
6-9行用于配置sqoop得参数配置
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条