PostgreSQL常用命令,启动连接,pg_dump导入导出

文章目录

  • [1 PostgreSQL服务启动与停止、连接](#1 PostgreSQL服务启动与停止、连接)
  • [2 常用sql命令](#2 常用sql命令)
  • [3 数据备份与恢复](#3 数据备份与恢复)

1 PostgreSQL服务启动与停止、连接

在没有设置环境变量的情况下 需进入pgsql的bin目录

shell 复制代码
#Windows下启动
#打开"开始"菜单,找到 "PostgreSQL" 文件夹,找到 "pgAdmin" 应用程序,单击该应用程序图标启动PostgreSQL
进入postgresql目录
.\bin\pg_ctl -D data -l logfile start
.\bin\pg_ctl -D data -l logfile stop
.\bin\pg_ctl -D 数据目录 -l /xx/postgresql.log start        #PostgreSQL 的 pg_ctl 命令要求 -l 参数后跟的是一个日志文件的路径,而不是目录。你需要指定一个具体的文件名,例如 D:\SoftwareInstall\PostgreSQL\data\log\postgresql.log。这样,PostgreSQL 就可以在该目录下创建或追加日志文件
注册为本地服务后 可直接通过 net start xx 启动服务
#Linux下启动
su - postgres
/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile

#连接指定服务器上的数据库(-U 用户名)
psql -h IP -p 端口 -U 用户名 -d 数据库名 -W

2 常用sql命令

sql 复制代码
select version(); #显示版本信息
\l  #列出所有数据库
\c database_name #切换到指定的数据库
#查看当前使用的数据库
select current_database();
\c #显示当前数据库名称和用户
\conninfo #显示客户端的连接信息
\du #显示所有用户
\dn #显示数据库中的schema
\encoding #显示字符集

#创建数据库
creadb database db_name owner 所属用户 encoding UTF8;
drop database db_name;

\d #列出数据库中所有表
\dt #列出数据库中所有表
\d [table_name] #显示指定表的结构
\di #列出数据库中所有 index
\dv #列出数据库中所有 view
drop table tb_name;  #删除一张表
#插入数据
insert into table_name(column1,column2,...) values(value1,value2,..)
alter table [表名] drop column [字段名];  #删除表中的字段

\i testdb.sql #执行sql文件
\x #扩展展示结果信息,相当于MySQL的\G
\o /tmp/test.txt #将下一条sql执行结果导入文件中
\? #所有命令帮助
\h #sql命令帮助
\q #退出连接

3 数据备份与恢复

shell 复制代码
#  导出数据
#导出数据库结构和数据
pg_dump -h ip -p port -U 用户名 -d your_database -f backup.sql
#导出数据库结构(仅架构)
pg_dump -h ip -p port -U 用户名 -d your_database -s -f schema_dump.sql

#导出单表结构和数据
pg_dump -h ip -p port -U 用户名 -d your_database -t table_name -f backup.sql  #sql中数据为copy方式 
pg_dump -h ip -p port -U 用户名 -d database_name -t table_name --column-inserts -f backup.sql  #sql中数据为insert方式,速度慢,便于导入到非PostgreSQL数据库
pg_dump -h ip -p port -U 用户名 -d database_name -t table_name --column-inserts > backup.sql   #不仅可以使用 -f xx.sql,也可使用 > xx.sql
#只导出表结构,不导出表数据
pg_dump -h ip -p port -U 用户名 -d database_name -t table_name -s -f backup.sql  #-s 参数只导致对象定义模式,不导出数据
#只导出表数据,不导出表结构
pg_dump -h ip -p port -U 用户名 -d database_name -t table_name -a -f backup.sql  #-a 参数只导出表数据,不导出表结构

#导出多个表数据
pg_dump -h ip -p port -U 用户名 -d database_name -t tb_name1 -t tb_name2 -f backup.sql



#  导入数据 执行sql文件
psql -h IP -p port -U 用户名 -W -d db_name < dump/save.sql
psql -h ip -p port -U postgres -d db_name -f xxx.sql 

pg_dump 常用参数

  • -h host:指定数据库主机名,或者IP
  • -p port:指定端口号
  • -U user:指定连接使用的用户名
  • -W:按提示输入密码
  • -d, --dbname=DBNAME:指定要导出的数据库名称
  • -a,--data-only:只导出表数据,不导出表结构
  • -s,--schema-only:只导致对象定义模式,不导出数据
  • -t,--table=table,只转存匹配到的表,视图,序列,可以使用多个-t匹配多个表,不指定具体表则导出整个数据库
  • -c,--clean:在导入时清理(删除)数据库,是否生成清理该数据库对象的语句,比如drop table
  • -C,--create,是否输出一条创建数据库语句
  • -f file,--file=file,指定输出文件或目录名,输出到指定文件中
  • -n schema,--schema=schema,只转存匹配schema的模式内容
  • -N schema,--exclude-schema=schema,不转存匹配schema的模式内容
  • -O,--no-owner,不设置导出对象的所有权
  • -T table,--exclude-table=table,不转存匹配到的表。
  • --inserts,使用insert命令形式导出数据,这种方式比默认的copy方式慢很多,但是可用于将数据导入到非PostgreSQL数据库。
  • ---column-inserts ,导出的数据有显式列名,以带有列名的 INSERT 命令形式转储数据
  • 数据库名放最后,不指定默认是系统变量PGDATABASE指定的数据库
相关推荐
烦躁的大鼻嘎7 分钟前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师7 分钟前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器
ac.char14 分钟前
在 Ubuntu 上安装 Yarn 环境
linux·运维·服务器·ubuntu
敲上瘾14 分钟前
操作系统的理解
linux·运维·服务器·c++·大模型·操作系统·aigc
tatasix31 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。44 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
传而习乎1 小时前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos