上周我問了一個非常相似的問題,它得到了回答,并且幫助很大。現在我有一個稍微不同的 psql 問題
我有一個批處理腳本,它連接到資料庫并給它一個要執行的 sql 檔案(myFirstSQLFile.sql)。該腳本還傳遞了一個env值為 的變數test。
%PSQLCOMMAND% -h {server} -U {user} -d {dbname} -E -q -f myFirstSQLFile.sql -v env="test"
myFirstSQLFile.sql有更多 psql 命令來執行其他 sql 檔案,如下所示。
\i file1.sql;
\i file2.sql;
\i file3.sql;
我要做的是根據env我傳遞給它的變數的值在檔案中執行某些行。
類似于條件陳述句的東西,也許像這樣
\i file1.sql;
\i file2.sql;
\if :env = 'test'
\i file3.sql;
\else
\i file4.sql
\endif;
但是上面的方法不起作用,我不知道這是否與正確的語法很接近。
我已經嘗試了很多東西,但到目前為止還沒有任何作業。我對任何型別的解決方案持開放態度,它不一定必須是 if 陳述句,例如是否可以從批處理腳本中將檔案名作為變數傳遞,然后以某種方式在 sql 檔案中執行它,那就是對我來說也是一個可以接受的解決方案。
uj5u.com熱心網友回復:
您無法在 中進行比較\if。這應該有效:
SELECT :'env' = 'test' AS is_test \gset
\if :is_test
\i file3.sql
\else
\i file4.sql
\endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427603.html
標籤:PostgreSQL psql
上一篇:EFCore:更新資料庫錯誤:關系“City”的列“PostalCode”已經存在[PostgreSQL]
下一篇:整理SQL查詢
