前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL - psql使用汇总

PostgreSQL - psql使用汇总

作者头像
雨临Lewis
发布2022-01-11 13:54:13
1.9K0
发布2022-01-11 13:54:13
举报
文章被收录于专栏:雨临Lewis的博客

PostgreSQL连接数据库的两种方式

PostgreSQL在安装时自带了pgAdminpsqlpgAdmin是可视化工具,psql是命令行工具。

虽然pgAdmin操作起来会更加直观简单,但是在restore和backup db的时候,效率和性能会比较低下,如果db过于庞大,还会导致pgAdmin内存溢出。

推荐使用psql来连接数据库进行备份和恢复db,同样大小的db,使用psql来restore会比pgAdmin快上数倍!

psql连接数据库

直接连接到指定的数据库

1

psql -h <dbserver_IP> -p<dbserver_port> -d <database_Name> -U <db user>

如果host是localhost,可以不指定该参数,当不指定端口号时会使用默认的端口号5432,或者你可以通过-p来指定其他端口号。

比如你想连接本地的db:test:5432,用户名是postgres,可以使用如下的命令:

1

psql -d test -U postgres

如果有密码的话会提示你输入密码,连接数据库后就可以直接通过sql语句来进行相关的操作了。

先登陆psql控制台,再连接指定的数据库

psql命令也可以不指定某个数据库,如下:

1

psql -h <dbserver_IP> -p<dbserver_port> -U <db user>

这时候登陆成功后会进入psql的命令台,此时可以跑一些数据库备份、创建数据库或者连接数据库之类的操作。

在psql的命令台输入\c <database_Name>,接着按下回车键,即可连接到对应的数据库,如下:

1 2 3 4 5 6

postgres=# \c cbx6_dev WARNING: Console code page (437) differs from Windows code page (1252) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. You are now connected to database "cbx6_dev" as user "postgres". cbx6_dev=#

怎么切换到不同的数据库

如果已经连接到一个数据库了,这时候想切换到另一个数据库怎么办?很简单,还是跑这个\c的命令即可。

退出psql控制台

和其他的命令行工具不一样,psql在退出时并不是使用exit,而是使用\q,接着按下回车就行了,这里的q指的就是quit。

psql自动输入密码

方式一:设置环境变量PGPASSWORD

如下:

1 2 3 4 5

#linux export PGPASSWORD=12345 #windows set PGPASSWORD=12345

方式二:使用密码文件.pgpass

~/目录下创建隐藏文件.pgpass~/目录也就是当前用户的用户目录。在密码文件中填写hostname:port:database:username:password的内容,如下:

1 2 3

localhost:5432:db1:admin:admin localhost:5432:db2:admin:admin localhost:5432:db3:admin:admin

然后需要配置一个环境变量PGPASSFILE,指向.pgpass密码文件的路径:

1

set PGPASSFILE=C:\Users\xxx\.pgpass

这种方法的好处是可以同时定义多个不同主机上的数据库账号密码。

方式三:修改服务端配置文件pg_hba.conf

打开PostgreSQL安装目录下的\data\pg_hba.conf,将其中的连接对应的md5改为trust,然后重启服务。如下:

1 2 3 4 5 6

# TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 md5 <= 改为trust host all all 172.20.1.0/24 md5 host all all 172.168.199.0/24 md5

psql运行SQL文件

方式一:连接db后执行SQL文件

首先通过psql连接到对应的db:

1

psql -d db1 -U userA

接着输入密码,进入数据库后,输入:

1

\i /pathA/xxx.sql

这里有个问题,如果你把SQL文件的路径里的路径分隔符写成了\,会报错说Permission denied

这里的文件路径必须使用Linux平台下的路径分隔符/,否则会报错。

方式二:直接通过psql命令执行SQL文件

这种方式无需先登录数据库,直接用一个命令就可以了:

1

psql -d db1 -U userA -f /pathA/xxx.sql

接着输入密码即可执行SQL文件到对应的db里。

小技巧:可以直接把sql文件拖到cmd窗口里,会自动把该sql文件的所在路径给输入到命令行中。

导出db dump

格式如下:

1

pg_dump -h <host> -p <port> -U <db_user> -F c -f <dump_path> <db_name>

demo:

1

pg_dump -h localhost -p 5432 -U postgres -F c -f D:\dump_jar\test.dump test

恢复备份(导入db dump)

1

pg_restore -h <host> -p <port> -U <db_user> -W -O -d <db_name> <dump_path>

demo:

1

pg_restore -h localhost -p 5432 -U postgres -W -O -d test test.DUMP

这里的db要先创建好,dump本质上就是一大堆sql,可以通过该命令导入到已存在的db里。另外,执行pg_restore时需要输入密码。

参考链接

警告

本文最后更新于 February 3, 2021,文中内容可能已过时,请谨慎使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-012,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PostgreSQL连接数据库的两种方式
  • psql连接数据库
    • 直接连接到指定的数据库
      • 先登陆psql控制台,再连接指定的数据库
      • 怎么切换到不同的数据库
      • 退出psql控制台
      • psql自动输入密码
        • 方式一:设置环境变量PGPASSWORD
          • 方式二:使用密码文件.pgpass
            • 方式三:修改服务端配置文件pg_hba.conf
            • psql运行SQL文件
              • 方式一:连接db后执行SQL文件
                • 方式二:直接通过psql命令执行SQL文件
                • 导出db dump
                • 恢复备份(导入db dump)
                • 参考链接
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档