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 status
command to confirm the status of PostgreSQL isactive
. Press the CTRL + C keys to exit.The interactive PSQL command-line for PostgreSQL must be properly installed and working. Execute the
psql -V
command 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:
1 | nano test.sql |
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 some_table
:
1 | SELECT * FROM some_table; |
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 -a
or --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 objectrocket
role.
The following command can be used to access the test.sql
file created earlier:
1 | 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
The -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 --echo-all
option:
1 | 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’
The \i
command can aslo be used to execute the SQL file from within the psql
interface.
Thepsql
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 \c
command.
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:
1 | psql postgres |
The following example uses the \c
command, followed by the database name, to connect to a database before executing the SQL script:
1 | \c some_database |
Execute the following \i
command to run the SQL file:
1 | \i \path\TO\file_name.sql |
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.
转载本文请联系原作者获取授权,同时请注明本文来自熊毅科学网博客。
链接地址:https://wap.sciencenet.cn/blog-2866696-1329170.html?mobile=1
收藏