方法一 在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,2,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
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- postgresql insert into select無法使用并行查詢的解決
- 在postgreSQL中運行sql腳本和pg_restore命令方式
- 在postgresql中通過命令行執行sql文件
- Postgresql的pl/pgql使用操作--將多條執行語句作為一個事務
- Postgresql psql文件執行與批處理多個sql文件操作
- Postgresql通過查詢進行更新的操作
- 在postgresql中結束掉正在執行的SQL語句操作
- 基于postgresql行級鎖for update測試
- PostgreSQL 實現列轉行問題