在 PSQL 中运行 SQL 文件

Shihab Sikder 2023年2月6日 2022年5月14日
  1. 从命令行或终端运行 SQL 文件
  2. 在命令行中运行 SQL 脚本
  3. 从 PSQL Shell 检查
  4. 从 PSQL Shell 运行 SQL 文件
在 PSQL 中运行 SQL 文件

有时,你可能需要一次运行多个查询,例如 CRUD 操作。为此,很难使用命令行或终端正确编写 SQL 命令。

如果你知道查询,请将其写入文件并使用扩展名 .sql 保存。它定义文件内的内容是标准查询语言。

从命令行或终端运行 SQL 文件

你想创建一个表并将一些数据插入到表中。

CREATE TABLE BANK(
    ID INT PRIMARY KEY,
    BANK_NAME VARCHAR,
    SWIFTCODE VARCHAR NOT NULL
);

CREATE TABLE ACCOUNT(
    ID INT PRIMARY KEY,
    ACCOUNT_NAME VARCHAR NOT NULL,
    BANK_ID INT,
    BALANCE INT DEFAULT 0,
    CONSTRAINT fk_bank FOREIGN KEY(BANK_ID) REFERENCES BANK(ID)
);
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(1,'State Bank','123456');
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(2,'Central Bank','654321');
INSERT INTO Account(ID,ACCOUNT_NAME,BANK_ID,BALANCE) VALUES(1,'Jhon',1,500);

下面给出了运行此文件的格式。

psql -h <host_address> -d <database_name> -U "database_user" -p "port_no" -a -q -f "file_path"
标志 意义
-h 主机地址(默认为 Localhost
-d 数据库名称(默认数据库是 postgres
-U 用户名(默认用户名是 postgress
-p 端口号(默认端口为 5432
-a 如果 SQL 有任何可打印内容,则打印所有内容
-f SQL 脚本的文件目录

在命令行中运行 SQL 脚本

C:\Users\Admin>psql -h localhost -d postgres -U postgres -p 5432 -a -q -f C:\Users\Admin\Desktop\script1.sql
Password for user postgres:
CREATE TABLE BANK(
    ID INT PRIMARY KEY,
    BANK_NAME VARCHAR,
    SWIFTCODE VARCHAR NOT NULL
);

CREATE TABLE ACCOUNT(
    ID INT PRIMARY KEY,
    ACCOUNT_NAME VARCHAR NOT NULL,
    BANK_ID INT,
    BALANCE INT DEFAULT 0,
    CONSTRAINT fk_bank FOREIGN KEY(BANK_ID) REFERENCES BANK(ID)
);
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(1,'State Bank','123456');
INSERT INTO bank(ID, BANK_NAME,SWIFTCODE) VALUES(2,'Central Bank','654321');
INSERT INTO Account(ID,ACCOUNT_NAME,BANK_ID,BALANCE) VALUES(1,'Jhon',1,500);

从 PSQL Shell 检查

postgres=# \dt
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | account  | table | postgres
 public | accounts | table | postgres
 public | bank     | table | postgres
 public | logger   | table | postgres
 public | randoms  | table | postgres
 public | students | table | postgres
 public | times    | table | postgres
(7 rows)

postgres=#

从 PSQL Shell 运行 SQL 文件

此外,你可以从 psql shell 运行 SQL 脚本,如下所示:

postgres-# \i C:/Users/Admin/Desktop/script1.sql
CREATE TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1

在这里,你可以看到已经创建了两个表,并且执行了三个插入命令。有时在 Windows 中,你可能会收到 Permission Denied

这基本上会发生在\i 之后的目录路径中的反斜杠上。

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website