Placing query output into psql variables
It is also possible to store some values produced by a query into variables—for instance, to reuse them later in other queries.
In this recipe, we will demonstrate this approach with a concrete example.
Getting ready
In the Controlling automatic database maintenance recipe of Chapter 9, Regular Maintenance, we will describe VACUUM
, showing that it runs regularly on each table based on the number of rows that might need vacuuming (dead rows). The VACUUM
 command will run if that number exceeds a given threshold, which by default is just above 20% of the row count.
In this recipe, we will create a script that picks the table with the largest number of dead rows and runs VACUUM
on it.
How to do it…
The script is as follows:
SELECT schemaname , relname , n_dead_tup , n_live_tup FROM pg_stat_user_tables ORDER BY n_dead_tup DESC LIMIT 1 \gset \qecho Running VACUUM on table :"relname" in schema :"schemaname" \qecho Rows before: :n_dead_tup dead, :n_live_tup live...