1. 程式人生 > 資料庫 >在postgresql中執行sql檔案並匯出結果的操作

在postgresql中執行sql檔案並匯出結果的操作

方法一 在psql中執行

在終端進入使用者test下的資料庫testdb:

$ psql -p 5432 -U test -d testdb

假設要執行的.sql檔案叫做d1.sql,存放路徑為:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql,匯出的檔案叫做d1.out,存放的路徑為:/mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out

testdb=# \o /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out
testdb=# \i /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql
testdb=# \o

\o file1 表示接下來的內容輸出到檔案file1

\i file2 表示匯入檔案file2

\o 表示結束輸出到檔案file1

方法二 在終端執行

$ psql -p 5432 -U test -d testdb -f /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/d1.sql > /mnt/hgfs/share/database/2.18.0_rc2/dbgen/queries/out/d1.out

補充:postgresql windows自動匯出sql

@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
 
set PGPASSWORD="D:/sql_bak/pws.vbs"
SET PGPATH="D:/Program Files/PostgreSQL/10/bin/pg_dump"
SET SVPATH=D:/sql_bak/
SET PRJDB=fame
SET DBUSR=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
 
SET DBDUMP=%PRJDB%_%d%_%t%.sql
 
%PGPATH% -h 127.0.0.1 -p 5432 -U %DBUSR% %PRJDB% > %SVPATH%%DBDUMP%
 
echo Backup Taken Complete %SVPATH%%DBDUMP%

將以上檔案儲存為 bat格式。

PGPATH:postgresqsl 安裝目錄

SVPATH:備份路徑

PRJDB:資料庫名字

DBUSR:使用者名稱

資料庫修改配置檔案:pg_hba.conf

設了對本地要密碼md5認證。

# TYPE DATABASE  USER    CIDR-ADDRESS     METHOD
# IPv4 local connections:
host  all     all     127.0.0.1/32     md5

改成這樣,本地備份就不用輸入密碼了(改後要重啟服務)

# TYPE DATABASE  USER    CIDR-ADDRESS     METHOD
# IPv4 local connections:
host  all     all     127.0.0.1/32     trust

cmd 然後進入postgresql的bin目錄

執行

psql -h localhost -U username -d database < d:/data.bak

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。