ken*_*enn 8 bash shell-script sqlite bash-expansion
我正在尝试将剪贴板内容保存到 sqlite 数据库中。创建数据库和表。
我不希望它journal在每次剪贴板更改时都创建文件,所以我尝试传递PRAGMA journal_mode = OFF;标志。但是在单行命令中传递这些命令很棘手,因为sqlite只接受两个命令,例如
sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"
Run Code Online (Sandbox Code Playgroud)
有用。我寻找Q&A网站,一些建议以下列方式回显命令。
echo "PRAGMA journal_mode = OFF;" | sqlite3 clipboard_archive.db "insert into cb (cb_context) values ('clipboard');"
Run Code Online (Sandbox Code Playgroud)
但是PRAGMA journal_mode = OFF;虽然它在sqlite3命令提示符下工作,但不会以这种方式生效。
我的一个班轮脚本有什么问题?
jco*_*ctx 13
derobert的答案似乎不适用于点命令,但您可以使用-cmd:sqlite3 tolls.sql3 -cmd ".mode csv" ".import tolls.csv tolls"
它接受多个-cmd命令并在最终 arg 之前按顺序执行它们。
如果您不想要日志,不确定为什么要使用 SQLite(如果考虑速度,您是否考虑过更快的 WAL 模式?)但您可以给出多个用分号分隔的命令:
sqlite3 clipboard_archive.db "PRAGMA journal_mode = OFF; insert into cb (cb_context) values ('clipboard');"
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以运行\xe2\x80\xa6
\n$ sqlite3 <database_file> \'<statement_1>\' [\'<statement_n>\']\nRun Code Online (Sandbox Code Playgroud)\n$ sqlite3 data.db \'.mode json\' \'select * from my_table\'\nRun Code Online (Sandbox Code Playgroud)\n