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

関連情報