Línea de comando SQLite: ¿Cómo se canaliza la salida a una utilidad UNIX?

Línea de comando SQLite: ¿Cómo se canaliza la salida a una utilidad UNIX?

Eldocumentación SQLite para su cliente de línea de comandos indica que es posible filtrar la salida de consultas SQLite a través de utilidades UNIX:

El modo de salida predeterminado es "lista". El modo Lista de
mensajes
es especialmente útil cuando va a enviar el resultado de una consulta a otro programa (como AWK) para su procesamiento adicional.

ejemplo de salida producida en un símbolo del sistema SQLite

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

luego, si intento agregar una tubería al comando, aparece un nuevo mensaje

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

¿Es posible enviar la salida a una utilidad Unix usando una tubería desde la línea de comando SQLite, o solo es posible filtrar la salida SQLite si en realidad estás escribiendo una aplicación C y usando la biblioteca SQLite C?

Respuesta1

No puede canalizar la salida de una sesión SQLite interactiva porque no es un shell. |no hace en SQL lo que hace en una línea de comando. Lo que probablemente necesites hacer es algo parecido a sqlite3 /path/to/mydata.sqlite "select * from todos" | grep vim, que ejecutará el SQL y grepel resultado como parece que estás intentando hacer.

Respuesta2

Es posible filtrar el resultado de una consulta a través de un comando anteponiendo el argumento a .outputo .oncecon un |.

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

Desafortunadamente, esto no interactúa bien con programas que se apoderan de todo el terminal, como los buscapersonas. Para eso lo recomiendo mucholitecli.

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

información relacionada