数据库服务端连接本地库示例如下所示:
[postgres@pghost l ~]$ psql postgres postgres
psql (10 . 0)
Type " help” for help.
postgres=#
psql 后面的第一个 postgres表示库名,第二个postgres表示用户名,端口号默认使用变量$PGPORT 配置的数据库端口号,这里是 1921 端口。
为了后续演示方便, 创建一个测试库mydb ,归属为用户 pguser ,同时为 mydb 库分配一个新表空间tbs_mydb ,如下所示:
–创建用户
postgres=# CREATE ROLE pguser WITH ENCRYPTED PASSWORD ’ pguser ’ ;
CREATE ROLE
–创建表空间目录
[postgres@pghost l ~]$ mkdir - p /database/pglO/pg_tbs/tbs_mydb
–创建表空间
postgres=# CREATE TABLESPACE tbs mydb OWNER pguser LOCATION ’/database/pglO/pg_tbs/tbs mydb ’;
CREATE TABLESPACE
–创建数据库
postgres=# CREATE DATABASE mydb
WITH OWNER = pguser
TEMPLATE = templateO
ENCODING = ’ UTFS ’
TABLESPACE = tbs_mydb ;
CREATE DATABASE
–赋权
GRANT ALL ON DATABASE mydb TO pguser WITH GRANT OPTION;
GRANT ALL ON TABLESPACE tbs_mydb TO pguser;
CREATE DATABASE 中的 OWNER 选项表示数据库属主 TEMPLATE 表示数据库模板,默认有 template0和 template1模板,也能自定义数据库模板, ENCODING 表示数据库字符集, 这里设 置成UTF8, TABLESPACE 表示数据库的 认表 间,新建数据库对象将默认创建在此表空间上,通过 psql 远程连接数据库的语法如下所示:
psql [option . . . ] [dbname [username]]
服务器 pghostl 的IP为192 168 28.74, pghost2的IP为192.168.28.75 ,在 pghost2 主机上远程连接 pghostl 上的 mydb 库命令如下:
[postgres@pghost2 ~]$ psql - h 192 .168.28 . 74 - p 1921 mydb pguser
Password for user pguser:
psql (10 . 0)
Type " help" for help.
断开 psql 客户端连接使用\q元命令或 CTRL+D 快捷键即可,如下所示:
[postgres@pghostl ~]$ psql mydb pguser
psql (10 . 0 )
Type " help ” for help .
mydb => \q
psql 元命令介绍:
psql 导入、导出表数据:
psql 支持文件数据导人到数据库,也支持数据库表数据导出到文件中 COPY命令和\copy命令都支持这两类操作,但两者有以下区别:
- COPY 命令是 SQL 命令, \copy 是元命令。
- COPY 命令必须具有 SUPERUSER 超级权限(将数据通过 stdin stdout 方式导人导出情况除外),而\copy 元命令不需要 SUPERUSER 权限。
- COPY 命令读取或写入数据库服务端主机上的文件,而\copy 元命令是从 psq 客户端主机读取或 入文件
- 从性能方面看,大数据量导出到文件或大文件数据导人数据库, COPY比\copy性能高。
psql 执行 sql 脚本: