How to get a one row select into bash variables named for each column in the row
This is my new favourite way:
read username first_name last_name <<< $(psql \
-X \
-U myuser \
-h myhost \
-d mydb \
--single-transaction \
--set ON_ERROR_STOP=on \
--no-align \
-t \
--field-separator ' ' \
--quiet \
-c "select username, first_name, last_name from users where id = 5489")
echo "username: $username, first_name: $first_name, last_name: $last_name"
How sweet is that? Another way is to read it into an array:
#!/bin/bash
set -e
set -u
declare -a ROW=($(psql \
-X \
-h myhost \
-U myuser \
-c "select username, first_name, last_name from users where id = 5489" \
--single-transaction \
--set AUTOCOMMIT=off \
--set ON_ERROR_STOP=on \
--no-align \
-t \
--field-separator ' ' \
--quiet \
mydb))
username=${ROW[0]}
first_name=${ROW[1]}
last_name=${ROW[2]}
echo "username: $username, first_name: $first_name, last_name: $last_name"