sqlite3 명령줄 호출에서 PRAGMA를 지정하는 방법은 무엇입니까?

sqlite3 명령줄 호출에서 PRAGMA를 지정하는 방법은 무엇입니까?

다음과 같은 SQLite 파일을 만듭니다.

sqlite3 output.db < myinserts.sql

안타깝게도 이 작업은 몇 시간이 걸리므로 다음 PRAGMA를 사용하여 속도를 높이고 싶습니다.

PRAGMA synchronous=OFF
PRAGMA count_changes=OFF
PRAGMA journal_mode=MEMORY
PRAGMA temp_store=MEMORY

질문: 명령줄에서 어떻게 설정하나요?
이는 스크립팅용이므로 대화형 모드가 필요하지 않으며 단일 명령줄에서 모든 작업을 수행하고 싶습니다.

답변1

PRAGMA를 에코한 다음 cat을 사용하여 SQL에 추가할 수 있습니다.

echo "PRAGMA synchronous=OFF;PRAGMA journal_mode=OFF;PRAGMA temp_store=MEMORY;" | cat - myinserts.sql | sqlite3 output.db

메모리에 파일을 추가하는 다른 방법은 다음을 참조하세요.https://www.cyberciti.biz/faq/bash-prepend-text-lines-to-file/

답변2

명령줄에서 이를 지정하는 쉬운 방법을 찾지 못했지만 해결 방법은 SQL 입력 시작 부분에 다음 줄을 넣는 것입니다.

echo "PRAGMA synchronous=OFF;PRAGMA count_changes=OFF;PRAGMA journal_mode=MEMORY;PRAGMA temp_store=MEMORY" \
  > tmp.sql
cat myinserts.sql >> tmp.sql
sqlite3 output.db < tmp.sql
rm tmp.sql

관련 정보