Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function print_setenv() {
- echo
- echo "必须先执行:"
- echo "----------------------------------------------"
- echo " source bin/setenv.sh"
- echo "或者:"
- echo " . bin/setenv.sh"
- echo
- }
- function print_help() {
- echo
- echo "初始化iCRM数据库工具:"
- echo "----------------------------------------------"
- echo " `basename $0` <options>"
- echo " -h help"
- echo " -q 快速模式,不导入商品数据"
- echo " -i 只初始化initdata,不初始化testdata"
- echo " -d [dbname] 指定数据库名"
- echo " -e 不检查环境变量,读取config/config.json文件"
- echo
- }
- trap 'exit 0;' INT
- QUICK_MODE=0
- INIT_TEST=1
- NO_TEST_DIR=0
- ISENV=1
- while getopts "d:ehqin:" arg
- do
- case $arg in
- q)
- QUICK_MODE=1
- ;;
- i)
- INIT_TEST=0
- ;;
- d)
- TARGET_CUSTOMER_DB=$OPTARG
- ;;
- e)
- ISENV=0
- ;;
- n)
- USEFUL_CUSTOMER=$OPTARG
- ;;
- ?)
- print_help
- exit 1
- ;;
- esac
- done
- CONFIG_FILE=${ICRM_ROOT}/config/config.json
- echo
- if [ $QUICK_MODE -eq 0 ]
- then
- echo "INIT DB IN FULL MODE"
- else
- echo "INIT DB IN QUICK MODE (WITHOUT GOODS)"
- fi
- echo
- echo
- if [ $ISENV -eq 0 ]
- then
- ICRM_ROOT=`pwd`
- CONFIG_FILE=${ICRM_ROOT}/config/config.json
- # ICRM_DB_HOST=`cat ${CONFIG_FILE} |awk -F\" -vx="mysql" -vy="host" '$2==x&&/{/{k=1}/}/{k=0}k&&$2==y{print $(NF-1)}'`
- # ICRM_DB_USER=`cat ${CONFIG_FILE} |awk -F\" -vx="mysql" -vy="user" '$2==x&&/{/{k=1}/}/{k=0}k&&$2==y{print $(NF-1)}'`
- # ICRM_DB_PASSWORD=`cat ${CONFIG_FILE} |awk -F\" -vx="mysql" -vy="password" '$2==x&&/{/{k=1}/}/{k=0}k&&$2==y{print $(NF-1)}'`
- ICRM_DB_HOST="cd"
- ICRM_DB_USER="root"
- ICRM_DB_PASSWORD="romens@2015"
- ICRM_CLOUDDB=`cat ${CONFIG_FILE} | grep cloudDBName | awk -F "\"" '{print $4}'`
- ICRM_CUSTOMERDB_PREFIX=`cat ${CONFIG_FILE} | grep customerDBPrefix | awk -F "\"" '{print $4}'`
- else
- # 检查运行环境
- [ "$ICRM_ROOT" = "" ] && print_setenv && exit 1
- fi
- if [ "${ICRM_DB_PASSWORD}" = "" ]
- then
- MYSQL="mysql -h ${ICRM_DB_HOST} -u ${ICRM_DB_USER}"
- else
- MYSQL="mysql -h ${ICRM_DB_HOST} -u ${ICRM_DB_USER} -p${ICRM_DB_PASSWORD}"
- fi
- # 如果没有指定customerDB,则使用romens作为默认customer数据库
- ICRM_CUSTOMERDB="${ICRM_CUSTOMERDB_PREFIX}_localhost"
- if [ "$1" != "" ]
- then
- SUFFIX=`echo $1 | sed 's/\./_/g'`
- ICRM_CUSTOMERDB="${ICRM_CUSTOMERDB_PREFIX}_${SUFFIX}"
- fi
- DB_ROOT=${ICRM_ROOT}/db/ddl
- RESULT=/tmp/$$.err
- function rebuildDB() {
- dbName=$1
- ${MYSQL} 2>/dev/null << EOF!
- DROP DATABASE IF EXISTS ${dbName};
- CREATE DATABASE IF NOT EXISTS ${dbName} DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- EOF!
- }
- function delDB() {
- userDB=`echo "show databases;" | ${MYSQL} 2>/dev/null`
- for i in ${userDB}
- do
- len1=`echo $i | grep ${ICRM_CUSTOMERDB_PREFIX} | awk -F "_" '{print length($3)}'`
- if [ "$len1" == "32" ]
- then
- echo "Drop database $i"
- ${MYSQL} 2>/dev/null << EOF!
- DROP DATABASE IF EXISTS ${i};
- EOF!
- fi
- done
- }
- function makeDB() {
- dbName=$1
- sqlRoot=$2
- quickMode=$3
- noTestDataSql=$4
- SQL=`find ${sqlRoot} -name "*sql" | sort`
- echo "Initializing Database: ${dbName} ..."
- for sql in ${SQL}
- do
- echo $sql | grep "testDataGoods" > /dev/null 2>&1
- noGoods=$?
- echo $sql | grep "testData.sql" > /dev/null 2>&1
- noTestDataDir=$?
- if [[ ${quickMode} -eq 1 && $noGoods -eq 0 ]]
- then
- echo "QUICK MODE, skipping $sql"
- elif [[ ${noTestDataSql} -eq 0 && $noTestDataDir -eq 0 ]]
- then
- echo "Skip $sql"
- else
- echo "Executing `basename ${sql}` ..."
- cat ${sql} | ${MYSQL} ${dbName} > ${RESULT} 2>&1
- [ $? -ne 0 ] && echo "FAILED!" && cat ${RESULT} | grep -v "^Warning: Using a password.*$" && exit 1
- fi
- done
- echo "Database <${dbName}> is sucessfully created!"
- echo "---------------------------------------------------------"
- echo
- return 0
- }
- function loadEnterprise() {
- cloudDBName=$1
- echo "SELECT customerDBSuffix FROM Customer WHERE enabled = true;" | ${MYSQL} ${ICRM_CLOUDDB} 2>/dev/null
- }
- if [ "${TARGET_CUSTOMER_DB}" = "" ]
- then
- echo ${ICRM_CLOUDDB}
- rebuildDB ${ICRM_CLOUDDB}
- makeDB ${ICRM_CLOUDDB} ${DB_ROOT}/cloudDB ${QUICK_MODE} ${INIT_TEST}
- fi
- if [ "${USEFUL_CUSTOMER}" = "" ]
- then
- echo ""
- else
- echo "UPDATE Customer set erpIsAvailable = false WHERE customerDBSuffix != '${USEFUL_CUSTOMER}'" | ${MYSQL} ${ICRM_CLOUDDB}
- fi
- data=`loadEnterprise ${ICRM_CLOUDDB}`
- echo "Found Enterprises ..."
- echo ${data}
- echo
- echo "Delete user databases"
- delDB
- if [ "$TARGET_CUSTOMER_DB" = "" ]
- then
- echo "Initiating all the databases"
- else
- echo "Initiating $TARGET_CUSTOMER_DB ONLY"
- fi
- i=0
- for x in ${data}
- do
- if [ ${i} -eq 0 ]
- then
- i=1
- type=${x}
- else
- xDB="${ICRM_CUSTOMERDB_PREFIX}_${x}"
- if [ "${TARGET_CUSTOMER_DB}" == "" -o "${xDB}" == "${TARGET_CUSTOMER_DB}" ]
- then
- i=1
- name=${xDB}
- rebuildDB ${name}
- makeDB ${name} ${DB_ROOT}/customerDB ${QUICK_MODE} ${INIT_TEST}
- else
- i=1
- name=${TARGET_CUSTOMER_DB}
- rebuildDB ${name}
- makeDB ${name} ${DB_ROOT}/customerDB ${QUICK_MODE} ${INIT_TEST}
- exit 2
- fi
- fi
- done
Add Comment
Please, Sign In to add comment