方法一 在psql中运行
在终端进入用户test下的数据库testdb:
1
|
$ 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
1
2
3
|
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
方法二 在终端运行
1
|
$ 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
@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认证。
1
2
3
|
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
|
改成这样,本地备份就不用输入密码了(改后要重启服务)
1
2
3
|
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 trust
|
cmd 然后进入postgresql的bin目录
执行
1
|
psql -h localhost -U username -d database < d:/data.bak
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/iteapoy/article/details/88392325