#!/bin/bash
yesterday=`date -d -1days '+%y-%m-%d'`
today=`date '+%y-%m-%d'`
tomarrow=`date -d 1days '+%y-%m-%d'`
#echo "從外部只傳遞兩個引數時,第乙個引數必須是 hive sql 檔案,第二個必須是yyyy-mm-dd格式的日期!"
#echo "從外部只傳遞乙個引數時,第乙個引數必須是 hive sql 檔案"
if [ $# == 2 ]; then
sqlfile=$1
echo "從外部只傳遞兩個引數時,第乙個引數必須是 hive sql 檔案,第二個必須是yyyy-mm-dd格式的日期!"
if [ $2 == "1970-01-01" ]; then
## 正常排程時,real 作業的日期是當天,但是依賴 real 作業的離線作業的日期是前一天
if [[ $sqlfile == *"real.sql"* ]]; then
echo "定時排程執行real 作業時,只需要乙個sql檔案作為引數,日期預設取當天"
dt=$today
else
echo "正常排程時,real 作業的日期是當天,但是依賴 real 作業的離線作業的日期是前一天"
dt=$yesterday
fielif [[ $2 =~ ^[0-9]-[0-9]-[0-9]$ ]] && date -d "$2" >/dev/null
then echo "date $2 is valid and matches the format (yyyy-mm-dd)"
echo "手動執行的時候,第二個引數為日期,需要手動指定,格式: yyyy-mm-dd"
dt=$2
else
echo "date $2 not matches the format (yyyy-mm-dd)!"
exit 11
fielse
echo "無法識別的引數!"
exit 11
fiecho "===>> 當前sql: $sqlfile, 執行日期: $dt"
hive \
-d yesterday=$yesterday -d date=$dt -d tomarrow=$tomarrow \
-f $sqlfile \
-i hdfs:
if test $? -ne 0
then
exit 11
fi
ASP 批量執行SQL文
很多時候,需要每次批量執行sql,尤其是有些不能用儲存過程的時候,程式寫起來比較麻煩。為了簡單,寫了下邊的這個函式。只要將資料庫連線物件,和由sql文組成的1維陣列傳遞進去,就可以實現批量的執行sql語句,並在任何一條語句執行失敗的時候回滾.function runsql byref condb,b...
mysql 動態執行SQL文
參考 mysql 儲存過程中動態執行 sql 文 2 pow mysql prepa re stmt1 from select sqrt pow 2 as hypotenuse mysql set a 3 mysql set b 4 b class userinputexecute stmt1 us...
mysql 動態執行SQL文
在mysql儲存過程中動態執行sql文 mysql prepare stmt1 from select sqrt pow 2 pow 2 as hypotenuse mysql set a 3 mysql set b 4 mysql execute stmt1 using a,b mysql set...