How to redirect output from PostgreSQL pg_recvlogical to a file or a pipe?

From: David Ventimiglia <davidaventimiglia(at)hasura(dot)io>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: How to redirect output from PostgreSQL pg_recvlogical to a file or a pipe?
Date: 2024-01-12 19:34:36
Message-ID: CADE7j6jz3qEinUfeALyBVdoyMWxE3okxUjKH0Dw8A+JjEzZJ_Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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.

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

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2024-01-12 19:48:42 Re: How to redirect output from PostgreSQL pg_recvlogical to a file or a pipe?
Previous Message Jim Nasby 2024-01-12 19:11:05 Re: [EXTERNAL]Re: Refresh Materialized View Issue