On 1/12/24 11:34, David Ventimiglia wrote:
Hello! How do I redirect logical decoding output from the PostgreSQL CLI tool |pg_recvlogical| either to a file or to another command via a pipe? I ask because when I try the obvious, no output is recorded or sent:

|pg_recvlogical -d postgres --slot test --start -f - >> sample.jsonl |

Lest there be any confusion, I already created the slot in an earlier step. Moreover, I can verify that if I omit the output redirection |>> sample| then it does work, insofar as it emits the expected change events when I perform DML in another terminal window. When I include the redirection (or alternatively, set up a pipeline), then nothing happens.

You left out the important part of the SO question:

pg_recvlogical -d postgres --slot test --create-slot -P wal2json

I can get:

pg_recvlogical -d postgres --slot test --start -f - >> sample.jsonl

to work when I do:

pg_recvlogical -d postgres --slot test --create-slot

wal2json seems to be the issue.


Note that I am aware of the option to pass a filename to the -f switch to write to a file.  That works, but it's not what I'm after because it doesn't help update my mental model of how this is supposed to work. Based on my current (flawed) mental model built up from command line experience with other tools, this /should/ work.  I should be able to send the output to stdout and then redirect it to a file.  It surprises me that I cannot.

Anyway, thanks!

Best,

David


--
Adrian Klaver
adrian.kla...@aklaver.com



Reply via email to