postgres psql bash script - ghdrako/doc_snipets GitHub Wiki
Flagi
-A— unaligned output - brak ramek, wyrównywania i dodatkowych spacji
-- bez -A
id | name
----+-------
1 | Jan
-- Z -A:
id|name
1|Jan
-t— tuples only - Brak nagłówka i informacji dodatkowych
--Bez -t:
id
----
1
(1 row)
-- Z -t:
1
-
-F ','- własny separator (np. CSV) -
-X--no-psqlrc- bez ładowania .psqlrc -
-q→ mniej szumu w output -
Pobranie jednej wartości do zmiennej (Bash)
USER_ID=$(psql -A -t -c "SELECT id FROM users WHERE email='[email protected]';")
echo $USER_ID
count=$(sudo -u postgres psql << EOF
SELECT COUNT(*) FROM (
SELECT datname FROM pg_catalog.pg_database
WHERE lower(datname)=lower($DATABASE)
)
EOF
)
- Pętla po wynikach zapytania
psql -A -t -c "SELECT id FROM users;" | while read id
do
echo "User: $id"
done
- CSV bez dodatkowych narzędzi
psql -A -t -F ',' -c "SELECT id,name FROM users;"
Wynik:
1,Jan
2,Anna
- \copy in a "here document"
#!/bin/bash
psql -U username -h hostname -d database -p password -f - <<EOF
\copy (SELECT data FROM table LIMIT 100) to "Users/name/Downloads" With CSV
EOF
- Run PSQL command from bash script psql -c \du -L output_of_du.txt
export PGDATABASE="${database}" export PGHOST="${host}" export PGPORT="${port}" while read -r file_name do psql -qAtX -1 -v "SCHEMA=${PGSCHEMA}" -v ON_ERROR_STOP=1 -f "${file_name}" || exit 1 done < <( printf '%s\n' migrations/*.sql | sort -V )