Home > Back-end >  How to execute multiple SQL files from a local directory in PostgreSQL/PgAdmin4 in on transaction in
How to execute multiple SQL files from a local directory in PostgreSQL/PgAdmin4 in on transaction in

Time:12-22

I have a folder in a directory in my PC which contains multiple SQL files. Each of the file is a Postgres function. I want to execute every SQL file situated in the folder at a time in PostgreSQL server using PgAdmin or in other way. How can I accomplish this?

CodePudding user response:

I apologize if I'm oversimplifying your question, but if the main issue is how to execute all SQL files without having to call them one by one, you just need to put them in a loop, e.g. in bash calling psql

#!/bin/bash

for f in *.sql
do
  psql -h dbhost -d db -U dbuser -f $f
done

Or cat them and pipe the result to psql stdin:

$ cat /path/to/files/*.sql | psql -h dbhost -d db -U dbuser

And if you need them to run in a single transaction, consider merging the SQL files, e.g. using cat - this assumes all statements in your sql file are properly terminated:

$ cat /path/to/files/*.sql > merged.sql
  • Related