PostgreSQL - psql使用汇总
PostgreSQL连接数据库的两种方式
PostgreSQL在安装时自带了pgAdmin和psql,pgAdmin是可视化工具,psql是命令行工具。
虽然pgAdmin操作起来会更加直观简单,但是在restore和backup db的时候,效率和性能会比较低下,如果db过于庞大,还会导致pgAdmin内存溢出。
推荐使用psql来连接数据库进行备份和恢复db,同样大小的db,使用psql来restore会比pgAdmin快上数倍!
psql连接数据库
直接连接到指定的数据库
| |
如果host是localhost,可以不指定该参数,当不指定端口号时会使用默认的端口号5432,或者你可以通过-p来指定其他端口号。
比如你想连接本地的db:test:5432,用户名是postgres,可以使用如下的命令:
| |
如果有密码的话会提示你输入密码,连接数据库后就可以直接通过sql语句来进行相关的操作了。
先登陆psql控制台,再连接指定的数据库
psql命令也可以不指定某个数据库,如下:
| |
这时候登陆成功后会进入psql的命令台,此时可以跑一些数据库备份、创建数据库或者连接数据库之类的操作。
在psql的命令台输入\c <database_Name>,接着按下回车键,即可连接到对应的数据库,如下:
| |
怎么切换到不同的数据库
如果已经连接到一个数据库了,这时候想切换到另一个数据库怎么办?很简单,还是跑这个\c的命令即可。
退出psql控制台
和其他的命令行工具不一样,psql在退出时并不是使用exit,而是使用\q,接着按下回车就行了,这里的q指的就是quit。
psql自动输入密码
方式一:设置环境变量PGPASSWORD
如下:
| |
方式二:使用密码文件.pgpass
在~/目录下创建隐藏文件.pgpass,~/目录也就是当前用户的用户目录。在密码文件中填写hostname:port:database:username:password的内容,如下:
| |
然后需要配置一个环境变量PGPASSFILE,指向.pgpass密码文件的路径:
| |
这种方法的好处是可以同时定义多个不同主机上的数据库账号密码。
方式三:修改服务端配置文件pg_hba.conf
打开PostgreSQL安装目录下的\data\pg_hba.conf,将其中的连接对应的md5改为trust,然后重启服务。如下:
| |
psql运行SQL文件
方式一:连接db后执行SQL文件
首先通过psql连接到对应的db:
| |
接着输入密码,进入数据库后,输入:
| |
这里有个问题,如果你把SQL文件的路径里的路径分隔符写成了\,会报错说Permission denied。
这里的文件路径必须使用Linux平台下的路径分隔符/,否则会报错。
方式二:直接通过psql命令执行SQL文件
这种方式无需先登录数据库,直接用一个命令就可以了:
| |
接着输入密码即可执行SQL文件到对应的db里。
小技巧:可以直接把sql文件拖到cmd窗口里,会自动把该sql文件的所在路径给输入到命令行中。
导出db dump
格式如下:
| |
demo:
| |
恢复备份(导入db dump)
| |
demo:
| |
这里的db要先创建好,dump本质上就是一大堆sql,可以通过该命令导入到已存在的db里。另外,执行pg_restore时需要输入密码。

