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?
Asked
Active
Viewed 5,642 times
2
Hans Ginzel
- 123
- 1
- 6
1 Answers
6
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:
Erwin Brandstetter
- 175,982
- 27
- 439
- 600
timecommand would measure whole script not each query. Inspired by the second suggestion:{ echo '\timing on;'; cat file.sql } |psql. – Hans Ginzel May 01 '15 at 17:20