クリップボードの内容をsqliteデータベースに保存しようとしています。データベースとテーブルを作成しました。
クリップボードが変更されるたびにファイルを作成したくないので、フラグを渡してjournal
みました。PRAGMA journal_mode = OFF;
しかし、これらのコマンドを1行のコマンドとして渡すのは難しいです。なぜなら、sqlite
2つのコマンドだけが許可されるからです。
sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"
効果があるいくつかのウェブサイトを検索しましたが、Q&A
一部のウェブサイトでは以下のようにコマンドをエコーするよう提案しました。
echo "PRAGMA journal_mode = OFF;" | sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"
ただし、PRAGMA journal_mode = OFF;
コマンドプロンプトでは機能しますが、この方法は適用されませんsqlite3
。
私の一行に何の問題がありますか?
答え1
ドロバート答えはドットコマンドでは機能しないようですが、次のことができます-cmd
。sqlite3 tolls.sql3 -cmd ".mode csv" ".import tolls.csv tolls"
複数のコマンドを受け入れ、-cmd
最終引数の前に順次実行します。
答え2
ロギングが必要ない場合は、なぜSQLiteを使用するのかわかりませんが(速度が重要な場合はより高速なWALモードを検討していますか?)、セミコロンで区切られた複数のコマンドを提供できます。
sqlite3 clipboard_archive.db "PRAGMA journal_mode = OFF; insert into cb (cb_context) values ('clipboard');"
答え3
あなたは走ることができます...
$ sqlite3 <database_file> '<statement_1>' ['<statement_n>']
はい…
$ sqlite3 data.db '.mode json' 'select * from my_table'
答え4
-cmd
このスイッチは複数回使用できるようです。これは私にとっても効果的です(WindowsのSQLite 3.8.7.2)。
sqlite3.exe yourdb.db -cmd ".mode column" -cmd ".headers on" "select * from persons;"