SQLite 命令列:如何將輸出透過管道傳輸到 UNIX 實用程式?

SQLite 命令列:如何將輸出透過管道傳輸到 UNIX 實用程式?

SQLite 文檔 其命令列客戶端表明可以透過 UNIX 實用程式過濾 SQLite 查詢的輸出:

預設輸出模式為“列表”。
[...]
當您想要將查詢的輸出傳送到另一個程式(例如 AWK)進行額外處理時,清單模式特別有用。

SQLite 命令提示字元處產生的輸出範例

sqlite> select * from todos;
1|finish reading getting started section of the vim manual
2|finish app feature

然後,如果我嘗試向命令添加管道,我只會得到一個新的提示

sqlite> select * from todos; | grep vim
...> 

是否可以使用 SQLite 命令列中的管道將輸出發送到 unix 實用程序,或者只有在您實際編寫 C 應用程式並使用 SQLite C 庫時才可以過濾 SQLite 輸出?

答案1

您無法透過管道傳輸互動式 SQLite 會話的輸出,因為它不是 shell。 |它在 SQL 中的作用與在命令列中的作用不同。您可能需要做的是類似於 的操作sqlite3 /path/to/mydata.sqlite "select * from todos" | grep vim,它將執行 SQL,並grep輸出您似乎正在嘗試執行的操作。

答案2

.output透過在參數前面加上或 ,.once可以透過指令過濾查詢的輸出|

.once '|grep vim'
select * from todos;

不幸的是,這不能與接管整個終端的程式(例如尋呼機)很好地互動。為此,我強烈推薦萊特克利

https://sqlite.org/cli.html#writing_results_to_a_file

相關內容