環境変数(Bash)を使用してPRAGMAをsqlite3に渡すことはできますか?

環境変数(Bash)を使用してPRAGMAをsqlite3に渡すことはできますか?

SQLite3のPRAGMA FOREIGN_KEYS = OFFデフォルト設定。もちろん、これは問題を引き起こします。

にコマンドを入れてPRAGMAを永久にオンにできることを知っていますが、~/.sqliterc問題はこれが私の呼び出しだけでなくSQLite3へのすべての呼び出しに影響を与えることです。これにより、インストールされている他のスクリプトに予期しない結果が生じる可能性があります。したがって、私は使用を避けたいです~/.sqliterc

私はBashスクリプトでSQLite3を使用しています(ターミナルで入力しません)。

この問題を解決する1つの方法は、SQLite3を呼び出すたびにPRAGMAを追加する必要があることを覚えておくことです。

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

(他のより汚れた方法を見つけることができます。)

問題は、特に古いコードを保持するときに忘れやすいことです。

それでは、「一時的に永久的に」、つまりスクリプト全体の期間中に有効にする方法はありますか?たとえば、これを次の環境変数に入れることができるかどうかを知りたいと思います。

export PRAGMA_FOREIGN_KEYS=ON    # This doesn't work.

またはそのようなもの。

これを行う方法はありますか、それとも-cmd最も簡単な方法を使用しますか?

答え1

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

関連情報