解析日志的第二个shell文件(stat_hour.sh),主要是把下载,解析放到一起,然后执行存储过程
是按小时进行统计,若要按天进行统计,若还是小时的日志,则只需更改存储过程那个地方,让存储过程一天只执行一次;若日志是按天生成的,则把传进来的时间参数改为按天的就行。
不管哪一种都需要更改存储过程,需要把基础数据导入到正式数据的语句改成按天的。
是按小时进行统计,若要按天进行统计,若还是小时的日志,则只需更改存储过程那个地方,让存储过程一天只执行一次;若日志是按天生成的,则把传进来的时间参数改为按天的就行。
不管哪一种都需要更改存储过程,需要把基础数据导入到正式数据的语句改成按天的。
. comm_function.sh
work_path=`getWorkPath`
#获取配置文件的路径
config_address=$work_path"/config";
comm_config_file=$config_address"/comm.config"
#x需要处理的类型,pv还是click,和配置文件中的相对应,和awk文件的某一部分名字相对应,和具体的sql语句有关
if test $1
then
type=$1
else
logInfo "main.sh is error,the first parameter is type that must have" $error_log
exit;
fi
#临时文件,必须填入绝对路径,否则会报错,不分类型,在下载日志的时候会
if test $2
then
temp_file=$2
else
logInfo "main.sh is error,the second parameter is temp_name that must have" $error_log
exit;
fi
lasthour=`date --date="1 hour ago" +%Y-%m-%d-%H`
#下载日志的时间,即需要下载解析哪一个时间的日志
if test $3
then
lasthour=$3;
fi
cd ${work_path}"/sh"
#获取配置文件中所配置的sql语句
table=`getConfigValue "sql_table_${type}" ${comm_config_file}`
#获取mysql的信息
mysql_head=`getConfigValue "mysql_head" ${comm_config_file}`
#获取执行住存储过程的名称
#procedure=`getConfigValue "sql_procedure_${type}" ${comm_config_file}`
#下载日志
./down_log.sh ${type} ${lasthour}
#解析日志
./phase_log.sh ${type} ${temp_file}
#临时文件入库
${mysql_head} "LOAD DATA LOCAL INFILE '${temp_file}"_"${type}' into table ${table} ";
#执行存储过程
#${mysql_head} -e "call ${procedure}('${lasthour}')"
#echo ${procedure}
#备份临时文件,只保存两个,并删除当前的临时文件
cp -f ${temp_file}"_"${type} ${temp_file}"_"${type}"_bak1"
cp -f ${temp_file}"_"${type}"_bak1" ${temp_file}"_"${type}"_bak2"
rm -rf ${temp_file}"_"${type}