How to run an SQL file in Postgres
Introduction to Running an SQL File in Postgres
This tutorial will explain how to run an SQL file in Postgres, using the
.sql extension, in a terminal or command prompt window. This can be accomplished in one of two ways, from inside of the PSQL command-line interface itself or from outside of PSQL. The article will also provide an overview of the options for the commands used to run a SQL file in Postgres.
Prerequisites to Run an SQL file in Postgres
PostgreSQL must be properly installed and running. Execute the
service postgresql statuscommand to confirm the status of PostgreSQL is
active. Press the CTRL + C keys to exit.
The interactive PSQL command-line for PostgreSQL must be properly installed and working. Execute the
psql -Vcommand to confirm the status. The results should resemble the following:
Create a SQL File that will Execute with PostgreSQL
Navigate to the project folder or directory by executing the
cd (change directory) command in a terminal or command-prompt window.
Create an SQL file using a text editor or terminal-based editor
Create the SQL file with a text editor or a terminal-based editor like nano, gedit or vim. Execute the following bash command to enter the
.sql file in the current directory using nano:
Once inside, enter some SQL commands into the SQL file for later execution. Following is an example of a command used to return all of the record rows in the PostgreSQL table named
SELECT * FROM some_table;
HERE IS A COMMENT
The results should resemble the following:
NOTE: Just press CTRL+O to output any changes to the file in
nano. However, be aware this will overwrite any changes to the file, or it will create a new file called
test.sql if a file does not already exist.
Run a SQL file in Postgres using the ‘psql’ command
Now execute the SQL file in the terminal window. Confirm there is a database created with some table data that can be used to test the
psql command. A role or user for that database will also be required.
Options for the ‘psql’ command to run a SQL file in Postgres
Following is a brief explanation of each of the options, or flags, used for the
psql command that will execute the SQL script file:
psql -U USER_NAME_HERE — The
-U flag is used to specify the user role that will execute the script. This option can be omited if this option’s username is the first parameter. The default username is the system’s current username, if one has not been explicitly specified.
psql -h 127.0.0.1 — The
-h flag is for the remote host or domain IP address where the PostgreSQL server is running. Use
127.0.0.1 for a localhost server.
psql -d some_database — The
-d option is used for the database name.
psql -a — The
--echo-all flags will print all of the lines in the SQL file that conatin any content.
psql -f /some/path/my_script_name.sql — The
-f option will instruct
psql to execute the file. This is arguably the most critical of all the options.
Execute the SQL file in PostgreSQL from the terminal
The final step in this process is to execute the file using the
psql command while connecting with an username, host and database. Note that this example uses the
The following command can be used to access the
test.sql file created earlier:
psql objectrocket -h 127.0.0.1 -d some_database -f test.sql
Use the ‘-a’ option to print everything while executing a SQL file in Postgres
-a option, also referred to as the
--echo-all option, is used to echo, or print, all of the input lines that contain any content. This includes the SQL comments and the original SQL commands or statements being executed.
The following is an example of the
psql objectrocket -h 127.0.0.1 -d some_database -f -a test.sql
The results should resemble the following:
NOTE: Be aware that the
-a option will print everything contained in the file, including commands and the original SQL statement.
Connect to PostgreSQL and then run a SQL file using ‘psql’
\i command can aslo be used to execute the SQL file from within the
psql must be entered though a database and a specified user or by connecting to a database once inside psql, using a
ROLE that has access to the database, with the
Connect to PostgreSQL without a database connection
The following example demonstrates how to connect to PostgreSQL with a specified
ROLE, but without specifying a particular database:
The following example uses the
\c command, followed by the database name, to connect to a database before executing the SQL script:
Execute the following
\i command to run the SQL file:
NOTE: If no path is specified, then PSQL will use the directory that was last accessed before connecting to PostgreSQL in order to execute the SQL file.
The following screenshot provides an overview:
Conclusion to Executing a SQL File in Postgres
This tutorial explained two ways to run an SQL file in Postgres, specifically from inside the PSQL command-line interface or from outside of PSQL using the
-f option. The article covered how to create an SQL file using a text editor or terminal-based editor that will execute with PostgreSQL, how to execute the SQL file from the terminal, connect to PostgreSQL and run a SQL file. The tutorial also covered how to run a SQL file in Postgres using the PSQL’ command and the options for the commands along with an explanation of each option. Remember that if no path is specified when connecting to PostgreSQL without a database connection, PSQL will use the directory that was last accessed prior connecting to PostgreSQL to execute the SQL file.
Pilot the ObjectRocket Platform Free!
Try Fully-Managed CockroachDB, Elasticsearch, MongoDB, PostgreSQL (Beta) or Redis.Get Started