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

相关内容