postgresql one line bash command to remove other session using the database

32 views Asked by At

I need your help to make something like that

How to delete and recreate databases in postgreSQL (error: template1 being already used)

but in one line using debian shell. I tried this:

su - postgres -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'imedig-cloud' AND pid <> pg_backend_pid();"

but I get the following errors:

-su: -c: línea 0: error sintáctico cerca del elemento inesperado `('
-su: -c: línea 0: `SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'imedig-cloud' AND pid <> pg_backend_pid();'

BR...

1

There are 1 answers

0
Donald Yañez On

After some help from Zegarek and some research the following code make the job:

su - postgres -c "psql -c \"SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'imedig-cloud' AND pid <> pg_backend_pid();\"" postgres