Bash

我可以使用環境變數(Bash)將 PRAGMA 傳遞給 sqlite3 嗎?

  • October 19, 2020

SQLite3PRAGMA FOREIGN_KEYS = OFF預設設置。當然,這是對問題的邀請。

我知道我可以通過將命令放入來永久打開 PRAGMA ~/.sqliterc,但問題是它會影響 SQLite3 的每次呼叫,而不僅僅是我自己的。這可能會導致其他已安裝腳本出現意外結果。因此,我想避免使用~/.sqliterc.

請注意,我在 Bash 腳本中使用 SQLite3(不是從終端輸入)。

解決這個問題的一種方法是記住在每次呼叫 SQLite3 時添加 PRAGMA ,例如

sqlite3 -cmd 'PRAGMA FOREIGN_KEYS = ON' example.db <<-END_CMD
   ...
END_CMD

(我可以找到其他更混亂的方法。)

這樣做的問題是很容易忘記,尤其是在維護舊程式碼時。

那麼,有沒有辦法“暫時-永久”打開它,我的意思是在腳本的整個持續時間內打開它?例如,我想知道是否可以將其放入環境變數中,例如

export PRAGMA_FOREIGN_KEYS=ON    # This doesn't work.

或類似的東西。

有沒有辦法做到這一點,或者使用-cmd最簡單的方法?

sqlite3pragma()
{
   sqlite3 -cmd 'PRAGMA FOREIGN_KEYS = ON' "$@"
}
sqlite3pragma example.db <<-END_CMD
   ...
END_CMD

引用自:https://unix.stackexchange.com/questions/615104