在 PSQL 中執行 SQL 檔案

Shihab Sikder 2023年2月6日
  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
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