public inbox for [email protected]  
help / color / mirror / Atom feed
Re: psql: print values and return the COUNT(*) value to bash?
2+ messages / 2 participants
[nested] [flat]

* Re: psql: print values and return the COUNT(*) value to bash?
@ 2025-12-29 16:40 Vincent Veyron <[email protected]>
  2025-12-30 05:26 ` Re: psql: print values and return the COUNT(*) value to bash? hubert depesz lubaczewski <[email protected]>
  0 siblings, 1 reply; 2+ messages in thread

From: Vincent Veyron @ 2025-12-29 16:40 UTC (permalink / raw)
  To: [email protected]; +Cc: Ron Johnson <[email protected]>; pgsql-general

On Mon, 29 Dec 2025 11:11:58 +0100
hubert depesz lubaczewski <[email protected]> wrote:

Hi Ron, Hubert,

> 
> Example:
> 
> =$ cat z.sh
> #!/usr/bin/env bash
> 
> table=pg_stat_all_tables
> field=last_autovacuum
> 
> returned="$( psql -d depesz_explain -v "t=$table" -v "f=$field" -X << _SQL_
> select current_timestamp - min(:"f") as days_ago
>           , min(:"f") as oldest_date
>           , count(*) as cnt
>      from :"t"
> _SQL_
> )"
> row_count="$( tail -n1 <<< "${returned}" | tr -cd 0-9 )"
> echo "Rowcount = $row_count"
> echo "Full output:"
> echo "${returned}"
> 
> # vim: set filetype=bash shiftwidth=4 expandtab smarttab softtabstop=4 tabstop=4 textwidth=132 :
> 
> =$ bash z.sh
> Rowcount = 1
> Full output:
>         days_ago        |          oldest_date          | cnt
> ------------------------+-------------------------------+-----
>  7 days 03:48:07.348247 | 2025-12-22 07:22:32.593814+01 | 212
> (1 row)
> 

IIUC, Ron wants the 212 number?

Maybe use the -t switch, and 'cut' :

#!/usr/bin/env bash

table=pg_stat_all_tables
field=last_autovacuum

returned="$( psql -t -d vv -v "t=$table" -v "f=$field" -X << _SQL_
select current_timestamp - min(:"f") as days_ago
          , min(:"f") as oldest_date
          , count(*) as cnt
     from :"t"
_SQL_
)"
row_count="$( tail -n1 <<< "${returned}" | cut -d "|" -f 3)"
echo "Rowcount = $row_count"
echo "Full output:"
echo "${returned}"



-- 
				Bien à vous, Vincent Veyron 

https://compta.libremen.com
Logiciel libre de comptabilité générale et analytique en partie double






^ permalink  raw  reply  [nested|flat] 2+ messages in thread

* Re: psql: print values and return the COUNT(*) value to bash?
  2025-12-29 16:40 Re: psql: print values and return the COUNT(*) value to bash? Vincent Veyron <[email protected]>
@ 2025-12-30 05:26 ` hubert depesz lubaczewski <[email protected]>
  0 siblings, 0 replies; 2+ messages in thread

From: hubert depesz lubaczewski @ 2025-12-30 05:26 UTC (permalink / raw)
  To: Vincent Veyron <[email protected]>; +Cc: Ron Johnson <[email protected]>; pgsql-general

On Mon, Dec 29, 2025 at 05:40:23PM +0100, Vincent Veyron wrote:
> > =$ bash z.sh
> > Rowcount = 1
> > Full output:
> >         days_ago        |          oldest_date          | cnt
> > ------------------------+-------------------------------+-----
> >  7 days 03:48:07.348247 | 2025-12-22 07:22:32.593814+01 | 212
> > (1 row)
> > 
> 
> IIUC, Ron wants the 212 number?
> 
> Maybe use the -t switch, and 'cut' :

Ah, that part I misunderstood.

Well, if there is only 1 row returned, always, then the simplest thing
would be to change

> row_count="$( tail -n1 <<< "${returned}" | cut -d "|" -f 3)"

to this:

row_count="$( awk 'NR==3 {print $NF}' <<< "${returned}" )"

format can stay the same, we don't need to psql -t, or -a, and it will
just work :)

Best regards,

depesz







^ permalink  raw  reply  [nested|flat] 2+ messages in thread


end of thread, other threads:[~2025-12-30 05:26 UTC | newest]

Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2025-12-29 16:40 Re: psql: print values and return the COUNT(*) value to bash? Vincent Veyron <[email protected]>
2025-12-30 05:26 ` hubert depesz lubaczewski <[email protected]>

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox