如何使用資料庫中的條件來編寫 Shell 腳本

如何使用資料庫中的條件來編寫 Shell 腳本

考慮這是我需要檢查的條件

select count(*) from nm.table1 where column1 =true; 

現在它應該來自資料庫(PostgreSQL)並IF THEN ELSE LOOP在 Unix 中使用

就像是

if [ $count > 1]
then
  echo " Successful"
else
  exit
fi

答案1

下面假設執行 psql 的 unix 使用者有一個能夠存取「nm.table1」的 postgresql 帳戶。如果沒有,您還需要向 psql 提供身份驗證詳細資訊。

最好的方法就是擁有一個~/.pgpass包含身份驗證詳細資訊的文件。

無論如何,一旦解決了身份驗證問題,就可以從psql查詢中獲取資料就像從任何其他命令、標準中獲取資料一樣簡單命令替換做這個工作。

對於psql,我們希望使用-t--tuples-only選項來停用列印頁首和頁腳,並使用-A--no-align選項來實現未對齊列印模式(即不列印額外的空格來填充輸出)。當然,-cor--command選項告訴psql我們下一個參數將是要執行的 SQL 指令。

count=$(psql -tAc 'select count(*) from nm.table1 where column1=true;')

if [ "$count" -gt "1" ] ; then
  echo " Successful"
else
  exit
fi 

相關內容