在 PSQL 中執行 SQL 檔案
Shihab Sikder 2023年2月6日 PostgreSQL PostgreSQL File

有時,你可能需要一次執行多個查詢,例如 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
之後的目錄路徑中的反斜槓上。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Shihab Sikder