Run a bunch of sql commands in a single transaction.
Often times, you will have a text file filled with SQL commands that you want to execute as a single transaction, and it's easy to forget to put the "commit;" as the last command in the file. There's a way around this, using the --single-transaction flag:
psql \
-X \
-U myuser \
-h myhost \
-f /path/to/sql/file.sql \
--echo-all \
--single-transaction \
--set AUTOCOMMIT=off \
--set ON_ERROR_STOP=on \
mydatabase
And so the contents of file.sql could be:
insert into foo (bar) values ('baz');
insert into yikes (mycol) values ('hello');
and both inserts will be wrapped in a begin/commit.