好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

在postgresql中运行sql文件并导出结果的操作

方法一 在p sql 中运行

在终端进入用户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

查看更多关于在postgresql中运行sql文件并导出结果的操作的详细内容...

  阅读:68次