There is already a question "How can I time SQL-queries using psql?" but I am missing answer how to do that from command line. How to run script with (optional) timing from command line – without \timing [on|off]
in the script, please?
1 Answer
You could use the shell command time
postgres@db:$ time psql db -c 'SELECT 1'
?column?
----------
1
(1 row)
real 0m0.108s
user 0m0.040s
sys 0m0.032s
Or, to combine a meta command with an SQL command, you could pipe a string to psql:
postgres@db:~/script$ echo '\timing \\ SELECT 1;' | LANG=C psql
Timing is on.
?column?
----------
1
(1 row)
Time: 0.000 ms
The special sequence
\\
(two backslashes) marks the end of arguments and continues parsing SQL commands, if any. That way SQL and psql commands can be freely mixed on a line. But in any case, the arguments of a meta-command cannot continue beyond the end of the line.
More options:
-
3The
time
command would measure whole script not each query. Inspired by the second suggestion:{ echo '\timing on;'; cat file.sql } |psql
. May 1, 2015 at 17:20