#!/bin/bash
source ExitCodeCheck.sh
#################################################
# version  V1.0
# author   xulu921
# time     2015-12-14
# function  这个是建表语句的主入口，需要传入建表语句的文件名
# argument  $1 队列名称  $2 对应建表语句的文件名称
#################################################

#################################################
# version  V1.1
# author   xulu921
# time     2016-04-18
# function  修改 可以同时传入多个参数，批量建表
# argument  $1 队列名称  可以是$2 $3 $4等等
#################################################

#################################################
# version  V1.1
# author   xulu921
# time     2017-04-28
# function  修改 
# argument  $1 队列名称  $2是库名和模式(创建包里面所有hql的表) $3 $5 $6是表名
#  $2 参数如果是ALL 那么创建所有表
#################################################

#################################################
# version  V1.1
# author   xulu921
# time     2017-05-15
# function  修改更加第二个参数自动给 HADOOP_USER_NAME 赋值
# argument  $1 队列名称  $2是库名和模式(创建包里面所有hql的表) $3 $5 $6是表名
#  $2 参数如果是ALL 那么创建所有表
#################################################

queue=$1
#tablename=$2
#捕获参数的个数
database=$2
flag=$3
sum=$#
DIR=`dirname "$0"`
DIR=`cd "${DIR}" > /dev/null; pwd`
export HIVE_HOME=/appcom/hive

if [ "${database,,}" = 'cx_ods_safe' -o "${database,,}" = 'cx_ods_mask' -o "${database,,}" = 'cx_mid_safe' ]; then
	export HADOOP_USER_NAME=hduser0102
elif [ "${database,,}" = 'cx_app_safe'  -o  "${database,,}" = 'cx_dm_safe'  ]; then
	export HADOOP_USER_NAME=hduser8303
elif [ "${database,,}" = 'pct_app_safe' ]; then
	export HADOOP_USER_NAME=hduser8303
else
	echo "plese enter right database"
fi 
echo ${HADOOP_USER_NAME}

#定义一个常量，用来标示我们的参数是从第二个开始，第一个是队列
j=1

if [ ${flag} = "ALL" ] ; then

ls ${DIR}/ |grep sql | while read line; 
do 
echo "will create table $line"
${HIVE_HOME}/bin/hive -d database=${database} -f ${line}
exitCodeCheck $?
done

else

## $@ 将所有的传入参数做一个列表
for i in $@ ;
do
##开始执行建表语句
if [ $j -gt 2 ] ; then
echo "will create table $i"
${HIVE_HOME}/bin/hive -d database=${database} -f ${DIR}/$i.sql
exitCodeCheck $?
fi
j=$(($j+1))
done
fi 