환경 변수(Bash)를 사용하여 PRAGMA를 sqlite3에 전달할 수 있나요?

환경 변수(Bash)를 사용하여 PRAGMA를 sqlite3에 전달할 수 있나요?

SQLite3 PRAGMA 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가장 간단한 방법을 사용합니까?

답변1

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

관련 정보