在postgresql中執行sql檔案並匯出結果的操作
阿新 • • 發佈:2021-01-07
方法一 在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
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。