hivef hive 執行 sql 檔案

2022-03-31 04:43:52 字數 1278 閱讀 1198

#!/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...