Linha de comando SQLite: como canalizar a saída para um utilitário UNIX?

Linha de comando SQLite: como canalizar a saída para um utilitário UNIX?

ODocumentação SQLite para seu cliente de linha de comando indica que é possível filtrar a saída de consultas SQLite através de utilitários UNIX:

O modo de saída padrão é "lista".
[...]
O modo Lista é especialmente útil quando você vai enviar a saída de uma consulta para outro programa (como AWK) para processamento adicional.

exemplo de saída produzida em um prompt de comando SQLite

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

então, se eu tentar adicionar um pipe ao comando, recebo um novo prompt

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

É possível enviar a saída para um utilitário unix usando um canal da linha de comando do SQLite ou só é possível filtrar a saída do SQLite se você estiver realmente escrevendo um aplicativo C e usando a biblioteca SQLite C?

Responder1

Você não pode canalizar a saída de uma sessão SQLite interativa porque não é um shell. |não faz no SQL o que faz em uma linha de comando. O que você provavelmente precisa fazer é algo parecido com sqlite3 /path/to/mydata.sqlite "select * from todos" | grep vim, que executará o SQL e grepa saída conforme você parece estar tentando fazer.

Responder2

É possível filtrar a saída de uma consulta por meio de um comando prefaciando o argumento com .outputou .oncecom um |.

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

Infelizmente, isso não interage bem com programas que ocupam todo o seu terminal, como pagers. Para isso, recomendo fortementeLitecli.

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

informação relacionada