Pgls
Skočit na navigaci
Skočit na vyhledávání
unset SHOW_ALL unset ONLY_OWNED unset LIMIT unset SORT_SIZE_ASC unset SORT_SIZE_DESC while getopts "au:U:h:n:sS" opt; do case $opt in a) SHOW_ALL='YES' ;; u) OWNED_BY=$OPTARG ;; n) LIMIT=$OPTARG ;; s) SORT_SIZE_ASC=YES ;; S) SORT_SIZE_DESC=YES ;; U) export PGUSER=$OPTARG ;; h) export PGHOST=$OPTARG ;; p) export PGPORT=$OPTARG ;; \?) echo "pgls list of PostgreSQL databases. Usage: pgls [OPTIONS] Filtering options: -a show all connectable databases -n ROWS show only n rows -s sort by size -S sort by size descent -u USERNAME show databases owned by user Connection options: -h HOSTNAME database server host -p PORT database server port -U USERNAME connect as user " exit 1 ;; esac done SQLQUERY="SELECT datname FROM pg_database WHERE datallowconn" if [ -z "$SHOW_ALL" ]; then SQLQUERY="$SQLQUERY AND NOT datistemplate" fi if [ -n "$OWNED_BY" ]; then SQLQUERY="$SQLQUERY AND datdba = (SELECT oid FROM pg_roles WHERE rolname='$OWNED_BY')" fi if [ -n "$SORT_SIZE_ASC" ]; then SQLQUERY="$SQLQUERY ORDER BY pg_database_size(oid) ASC" elif [ -n "$SORT_SIZE_DESC" ]; then SQLQUERY="$SQLQUERY ORDER BY pg_database_size(oid) DESC" fi if [ -n "$LIMIT" ]; then SQLQUERY="$SQLQUERY LIMIT $LIMIT" fi psql -At -c "$SQLQUERY" postgres
Použití:
[pavel@dhcppc2 ~]$ ./pgls -a | xargs -n 1 psql -c "select current_database()" current_database ------------------ template1 (1 row) current_database ------------------ postgres (1 row)