Greenplum数据库使用总结(干货满满)

时间:2018-12-25
本文章向大家介绍Greenplum数据库使用总结(干货满满),主要包括Greenplum数据库使用总结(干货满满)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

作者:小徐

制作时间:20181111

联系方式:xiaoxubigdata@163.com

目录

目录 - 2 -

1 Greenplum整体架构信息 - 9 -

1.1 架构图示 - 9 -

1.2 Master主机与Segment主机任务 - 9 -

1.3 数据库分布键分布数据策略 - 10 -

1.3.1 HASH策略 - 10 -

1.3.2 随机分布 - 10 -

1.4 master主节点获取segment节点上的数据顺序 - 10 -

2 Greenplum数据库常用知识 - 10 -

2.1 Greenplum 概念 - 10 -

2.2 OLTP与OLAP的理解 - 11 -

2.2.1 描述概念 - 11 -

2.2.2 图示解释 - 11 -

2.3 其他名词概念 - 12 -

2.3.1 HTAP概念 - 12 -

2.3.2 Append-only 的概念 - 12 -

2.4 数据仓库设计规则 - 13 -

2.4.1 数据仓库概念 - 13 -

2.4.2 数据仓库设计规则相关资料 - 13 -

2.4.3 数据仓库设计规范参考 - 13 -

3 Greenplum 集群安装 - 14 -

4 Greenplum 初级使用 - 14 -

4.1 Greenplum 常用命令列表 - 14 -

4.1.1 常用命令列表 - 14 -

4.2 PSQL命令实例 - 15 -

4.2.1 PSQL客户端的安装 - 15 -

4.2.1.1 在线安装客户端 - 15 -

4.2.1.2 导入密码 - 15 -

4.2.2 PSQL命令的使用 - 15 -

4.2.2.1 PSQL登录到数据库 - 15 -

4.2.2.2 COPY 命令参数说明 - 17 -

4.2.2.3 使用COPY导出数据 - 18 -

4.2.2.4 使用COPY导入数据 - 19 -

4.2.3 常用加载数据方式 - 21 -

4.2.3.1 加载SQL文件形式 - 21 -

4.2.3.2 直接执行SQL实例 - 21 -

4.3 数据库支持的数据类型 - 21 -

4.3.1 numeric类型 - 21 -

4.3.1.1 类型列表 - 21 -

4.3.1.2 类型示例 - 22 -

4.3.2 二进制类型 - 22 -

4.3.2.1 类型列表 - 22 -

4.3.2.2 类型示例 - 22 -

4.3.3 日期/时间类型 - 23 -

4.3.3.1 类型列表 - 23 -

4.3.3.2 类型示例 - 24 -

4.3.4 boolean 类型 - 25 -

4.3.4.1 类型列表 - 25 -

4.3.4.2 类型示例 - 25 -

4.3.5 几何类型 - 26 -

4.3.5.1 数据列表 - 26 -

4.3.5.2 类型示例 - 26 -

4.3.6 网络类型 - 27 -

4.3.6.1 数据列表 - 27 -

4.3.6.2 数据示例 - 27 -

4.3.7 常用数据类型 - 28 -

4.3.7.1 数据列表 - 28 -

4.3.7.2 数据示例 - 28 -

4.4 常用函数 - 29 -

4.4.1 字符串函数 - 29 -

4.4.1.1 函数列表 - 29 -

4.4.1.2 函数示例 - 30 -

4.4.2 时间函数 - 31 -

4.4.2.1 函数列表 - 31 -

4.4.2.2 函数示例 - 31 -

4.4.3 数值计算函数 - 32 -

4.4.3.1 函数列表 - 32 -

4.4.3.2 函数示例 - 32 -

4.4.4 其他常用函数 - 33 -

4.4.4.1 序列号生成函数 - 33 -

4.4.4.2 字符串列转行函数 - 34 -

4.4.4.3 md5 函数 - 34 -

4.4.4.4 字符串行转列函数 - 35 -

4.5 常见DDL语句 - 35 -

4.5.1 重命名表明 - 35 -

4.5.2 修改表字段 - 36 -

4.5.2.1 修改为DATE类型 - 36 -

4.5.2.2 修改为字符串的长度 - 36 -

4.5.2.3 增加与删除字段 - 36 -

4.5.2.4 修改为TIMESTAMP类型 - 36 -

4.5.2.5 修改为NUMERIC类型 - 37 -

4.5.2.6 更改表字段的约束 - 37 -

4.5.2.7 修改字段的名字 - 37 -

4.5.3创建与删除DATABASE语句 - 37 -

4.5.4创建与删除SCHEMA语句 - 38 -

4.5.5 更改表的分布键 - 38 -

4.6 gpload命令使用 - 38 -

5 常见创建TABLE方式 - 38 -

5.1 创建Heap表 - 38 -

5.2 创建AO表 - 39 -

5.2.1 AO表不压缩 - 39 -

5.2.2 AO表压缩 - 39 -

5.2.3 AO表列存压缩 - 39 -

5.2.3.1 对orientation参数进行测试 - 39 -

5.2.3.2 统计压缩的大小 - 42 -

5.2.3.3 压缩类型比较 - 42 -

5.3 创建HDFS外表实例 - 44 -

5.3.1 创建外部表实例 - 44 -

5.3.2 查看错误数据的实例 - 44 -

5.3.3 创建可写外部表实例 - 45 -

5.3.3.1 创建可写外部表实例 - 45 -

5.3.3.2 创建可写外部表 - 45 -

5.3.3.3 查看HDFS上的数据 - 46 -

5.4 创建分区表 - 46 -

5.4.1 分区表概念 - 46 -

5.4.2 创建分区表 - 46 -

5.4.3 查看创建的分区表 - 47 -

5.4.3.1 查看创建表的名称 - 47 -

5.4.3.2 查看表的结构 - 48 -

5.4.4 插入分区表数据 - 48 -

5.4.4.1 生成数据脚本 - 48 -

5.4.4.2 插入数据 - 49 -

5.4.5 查看数据及数据分布情况 - 49 -

5.4.5.1 查看主表的数据 - 49 -

5.4.5.2 查看分布表的数据 - 50 -

5.4.5.3 查看数据分布情况 - 50 -

5.4.6 对分区表常用操作 - 51 -

5.4.6.1 增加分区 - 51 -

5.4.6.2 删掉分区 - 51 -

5.4.6.3 清空分区 - 51 -

5.4.6.4 修改分区 - 51 -

5.4.6.5 修改default分区 - 51 -

5.4.7 创建数字范围的分区表 - 52 -

5.4.8 创建字母范围的分区表 - 52 -

5.5 快速复制表 - 52 -

6 Greenplum 对JSON的支持 - 53 -

6.1 JSON概述 - 53 -

6.2 JSON常用运算符与函数 - 53 -

6.2.1 JSON常用运算符 - 53 -

6.2.2 JSON常用的创建函数 - 54 -

6.2.3 JSON处理函数 - 55 -

6.3 JSON 运算符常用实例 - 56 -

6.3.1 单组JSON解析 - 56 -

6.3.2 多组JSON解析 - 56 -

6.3.3 复杂的JSON解析 - 57 -

6.3.3.1 多个JSON子集的解析 - 57 -

6.3.3.2 获取JSON子集的数据 - 57 -

6.3.3.3 获取一个JSON集合的子元素 - 57 -

6.4 JSON 创建函数的使用 - 58 -

6.4.1 创建int类型的JSON格式数据 - 58 -

6.4.2 把行的数据转化为JSON类型的数据 - 58 -

6.5 JSON处理函数的使用 - 59 -

6.5.1 获取JSON中的数据 - 59 -

6.5.2 获取JSON中的数据(去除双引号) - 59 -

6.5.3 获取JSON数据中的KEY的值 - 60 -

6.6 JSON查询数据的方式 - 60 -

6.6.1 创建支持JSON数据的表 - 60 -

6.6.1.1 创建表的SQL - 60 -

6.6.1.2 插入数据SQL - 60 -

6.6.1.3 获取JSON数据的KEY值 - 61 -

6.6.2 获取JSON结构中的数据 - 62 -

6.6.3 按照条件查询数据 - 62 -

6.6.4 集合函数查询JSON数据 - 64 -

6.6.5 使用默认的函数查找数据 - 64 -

6.6.5.1 JSON_EACH 函数的使用 - 64 -

6.6.5.2 JSON_OBJECT_KEYS 函数的使用 - 65 -

6.6.6 把查询数据转化为JSON - 66 -

6.6.6.1 查看原始数据 - 66 -

6.6.6.2 把查询的数据转化为JSON - 67 -

7 Greenplum PGBENCH命令详解 - 69 -

7.1 PGBENCH概念详解 - 69 -

7.2 PGBENCH 参数详解 - 69 -

7.2.1 查看参数详细信息 - 69 -

7.3 PGBENCH 测试案例 - 70 -

7.3.1 创建表信息 - 70 -

7.3.2 修改以下参数 - 70 -

7.3.2.1修改配置文件 - 70 -

7.3.2.2重启服务 - 71 -

7.3.3创建SQL测试文件 - 71 -

7.3.4查看测试效果 - 71 -

8 Greenplum 常用函数 - 73 -

8.1 字符串函数 - 73 -

8.1.1 常见字符串函数 - 73 -

8.1.2 函数常见示例 - 73 -

8.1.2.1 字符串拼接 - 73 -

8.1.2.2 查看字符串的长度 - 74 -

8.1.2.3 查看字符在字符串的位置 - 74 -

8.1.2.4 在制定的位置截取字符串 - 74 -

8.1.2.5 删除字符串的制定字符 - 75 -

8.1.2.6 字符串转大小写 - 75 -

8.1.2.7 替换制定的字符串 - 75 -

8.1.2.8 按照分隔符分割字符串 - 76 -

8.2 日期及时间函数 - 76 -

8.2.1 常见日期及时间函数 - 76 -

8.2.2 函数常见使用 - 77 -

8.2.2.1 查看两个日期的 - 77 -

8.2.2.2 查看当前的日期 - 77 -

8.2.2.3 获取当前的时间 - 78 -

8.2.2.4 获取精确的时间戳 - 78 -

8.2.2.5 获取时间戳的制定参数 - 78 -

8.2.2.6 获取当前的时间戳 - 80 -

8.2.2.7 获取当前的时间 - 80 -

8.2.2.8 获取当前的时间戳 - 80 -

9 Greenplum高级使用 - 80 -

9.1 常用查询语句 - 80 -

9.1.1 查看表的数据分布情况 - 80 -

9.1.2 查看默认的错误数据 - 81 -

9.1.3 查看表的大小 - 81 -

9.1.4 查看数据库的占用大小 - 82 -

9.1.5 获取一个表的schema的信息 - 82 -

9.1.6 查看每个schema的占用大小 - 82 -

9.1.7 查看当前正在执行的语句 - 83 -

9.1.8 释放表的膨胀空间 - 83 -

9.2 常见创建表语句 - 84 -

9.2.1 快速复制一张表 - 84 -

9.2.2 重新设计一张表 - 84 -

9.3 分析执行计划 - 85 -

9.4 函数使用 - 85 -

9.5 视图使用 - 85 -

9.6 索引使用 - 85 -

9.6.1 支持的索引类型 - 85 -

9.6.2 获取索引的列表 - 85 -

9.6.3 bitmap索引的使用 - 86 -

9.6.3.1 获取测试表的信息 - 86 -

9.6.3.2 查看不使用索引耗时 - 86 -

9.6.3.3 创建索引 - 86 -

9.6.3.4 查看使用索引耗时 - 87 -

9.6.3.5 删除索引 - 87 -

9.6.3.6 查看执行计划 - 88 -

9.6.4 b-tree索引的使用 - 88 -

9.6.4.1 b-tree索引的特点 - 88 -

9.6.4.2 获取测试表的信息 - 88 -

9.6.4.3 查看不使用索引时的耗时 - 89 -

9.6.4.4 创建索引 - 89 -

9.6.4.5 查看使用索引的耗时 - 89 -

9.6.4.6 查看执行计划信息 - 90 -

9.7 引用第三方库 - 90 -

10 工作中常见知识汇总 - 90 -

10.1在使用外表时注意的问题 - 90 -

10.1.1 注意\线的转义问题 - 90 -

10.1.1.1 问题示例 - 90 -

10.1.1.2 解答方法 - 91 -

10.1.2 \1转特殊字符的问题 - 91 -

10.1.2.1 问题示例 - 91 -

10.1.2.2 解答方法 - 92 -

10.2 COPY命令常见错误汇总 - 92 -

10.2.1数据中有双引字符 - 92 -

10.2.1.1 问题示例 - 92 -

10.2.1.2 解答方法 - 93 -

11 Greenplum权限管理 - 93 -

11.1关于greenplum权限说明 - 93 -

11.1.1 概述 - 93 -

11.1.2 赋予权限的步骤总结 - 93 -

11.1.3 管理赋予在用户特殊属性上的权限 - 94 -

11.2 权限操作实例 - 94 -

11.2.1 在用户(USER)特殊属性上的权限 - 94 -

11.2.1.1 权限说明 - 94 -

11.2.1.2 权限创建实例 - 94 -

11.2.1.3 撤销用户的权限 - 95 -

11.2.2 在DATABASE(数据库)上的权限 - 96 -

11.2.2.1 权限说明 - 96 -

11.2.2.2 权限创建实例 - 96 -

11.2.2.3 权限撤销实例 - 97 -

11.2.2.4 总结数据库上权限 - 98 -

11.2.3 在SCHEMA(模式)上的权限 - 98 -

11.2.3.1 验证权限说明 - 98 -

11.2.3.2 创建USER2 - 98 -

11.2.3.3 把USAGE(使用权限)赋予用户 - 98 -

11.2.3.4 查看权限的效果 - 99 -

11.2.3.5 把CREATE(创建权限)赋予用户 - 99 -

11.2.3.6 在用户下查询数据 - 99 -

11.2.3.7 总结SCHEMA(模式)上的权限汇总 - 99 -

11.2.3.8 权限撤销实例 - 99 -

11.2.3.9 验证撤销的权限 - 100 -

11.2.4 在TABLE(表)上的权限 - 100 -

11.2.4.1 权限验证说明 - 100 -

11.2.4.2 把SELECT(查询)权限赋予用户 - 100 -

11.2.4.3 查看权限效果 - 100 -

11.2.4.4 赋予用户更多的权限 - 101 -

11.2.4.5 撤销用户的权限 - 101 -

11.2.4.6 查看撤销后的效果 - 101 -

11.3 权限参数详解 - 102 -

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 Greenplum整体架构信息

1.1 架构图示

 

在以上的架构中可以看出Greenplum主要是由Master和Segment组成的,Master承担生成查询计划并派发汇总执行结果,Segment是执行查询计划及数据储存管理。集群可以直接加载外部的数据。

 

官网请查看:https://greenplum.org/

Greenplum官方文档:https://gp-docs-cn.github.io/docs/common/gpdb-features.html

1.2 Master主机与Segment主机任务

Master主机负责

Segment主机负责

1. 建立与客户端的会话连接和管理

1. 业务数据的存储和存取

2.sql的解析并形成分布式的执行计划

2.执行由master分发的sql语句

3.将生成好的执行计划分
发到每个Segment上执行

3.对于master来说,每个
Segment都是对等的,负责对应数据的存储和计算

4.收集Segment的执行结果

4.每一台机器上可以配置
一到多个Segment

5.master不存储业务数据,
只存储数据字典

5.由于每个Segment都是对
等的,建议采用相同的机器配置

6.master主机可以一主一备,
分布在两台机器上

6.Segment分primary 和mirror两种,
一般交错第存放在子节点上

7.为了提高性能,master最好
单独占用一台机器

 

 

1.3 数据库分布键分布数据策略

由于greenplum数据库是个分布式数据库,数据分布在每一个segment节点上,其中数据的分布策略有两种分别是hash分布于随机分布。

1.3.1 HASH策略

Hash分布是利用Distributed by (filed1,filed2....) 做为数据分布的条件,计算hash值,并通过hash值路由到制定的segment上,如果不指定分布键,默认的是获取第一个字段作为分布键。在字段作为分布键时,该字段的值尽量是唯一的,这样才能分布的均匀,效率会更高,否则会降低数据库的想能。

1.3.2 随机分布

随机分布也叫平均分布。数据会随机的落在每一个segment节点上,不管数据内容是什么格式都会落到segment上,在SQL查询数据,数据会重新分布,性能会比较差,随机分布的用法为Distributed randomly;

 

1.4 master主节点获取segment节点上的数据顺序

Master在执行sql语句时由于数据切分放在每个segment上,master获取结果的顺序是segment提交的顺序,segment提交到master的顺序是随机的,就会导致一样的数据每次的查询结果顺序不一致,这也是与其他的数据不一样的地方。

2 Greenplum数据库常用知识

2.1 Greenplum 概念

Greenplum的架构采用了MPP(大规模并行处理)。在 MPP 系统中,每个 SMP节点也可以运行自己的操作系统、数据库等。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配(Data Redistribution) 。与传统的SMP架构明显不同,通常情况下,MPP系统因为要在不同处理单元之间传送信息,所以它的效率要比SMP要差一点,但是这也不是绝对的,因为 MPP系统不共享资源,因此对它而言,资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。这就是看通信时间占用计算时间的比例而定,如果通信时间比较多,那MPP系统就不占优势了,相反,如果通信时间比较少,那MPP系统可以充分发挥资源的优势,达到高效率。

中国已有:中信实业银行,东方航空公司,阿里巴巴,华泰保险,中国远洋(Cosco),李宁公司等大型企业用户选择Greenplum的产品。

2.2 OLTP与OLAP的理解

2.2.1 描述概念

Greenplum 支持OLTP与OLAP机制,同时也支持AO表与堆方式储存,其中OLTP与OLAP的特点如下:

OLTP(On-Line Transaction Processing,联机事务处理)系统也称为生产系统,它是事件驱动的、面向应用的,比如电子商务网站的交易系统就是一个典型的OLTP系统。OLTP的基本特点是:

数据在系统中产生,

基于交易的处理系统(Transaction-Based),

每次交易牵涉的数据量很小,

对响应时间要求非常高,

用户数量非常庞大,主要是操作人员,

数据库的各种操作主要基于索引进行。

 

OLAP(On-Line Analytical Processing,联机分析处理)是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。OLAP系统是跨部门的、面向主题的,其基本特点是:

本身不产生数据,其基础数据来源于生产系统中的操作数据(OperationalData)

基于查询的分析系统,

复杂查询经常使用多表联结、全表扫描等,牵涉的数据量往往十分庞大,

响时间与具体查询有很大关系,

用户数量相对较小,其用户主要是业务人员与管理人员,

由于业务问题不固定,数据库的各种操作不能完全基于索引进行。

2.2.2 图示解释

OLTP与OLAP的比较

 

OLTP与OLAP对于硬件的要求

2.3 其他名词概念

2.3.1 HTAP概念

HTAP(Hybrid Transactional / Analytical Processing)

一份数据,支持在线事务与在线分析

分布式share nothing架构,线性扩展

3-15倍压缩

https://yq.aliyun.com/articles/193401?utm_content=m_29900

 

2.3.2 Append-only 的概念

AO表为追加存储,当删除、更新记录时,有一个BITMAP对象来存储对应的记录是否被删除。对于AO存储,虽然是appendonly,但实际上GP是支持DELETE和UPDATE的,被删除或更新的行,通过BITMAP来标记,性需要用vacuum来释放。

 

2.4 数据仓库设计规则

2.4.1 数据仓库概念

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

2.4.2 数据仓库设计规则相关资料

具体的可以参考数据仓库之父Bill Inmon在1991年出版的"Building the Data Warehouse",下载地址为:链接: https://pan.baidu.com/s/1I5ImKxDv0Jbx3psqTY2TzQ 提取码: gm8k

2.4.3 数据仓库设计规范参考

名词

名词简称

名词解释

Data Warehouse

DW

数据仓库主体

Operational Data Store

ODS

数据原始接入层,需要对数据频繁的增删改查,是支持对近期数据的OLTP查询,以减轻业务系统负载。

Data Warehouse Detail

DWD

数据源的细节层,有的也称为ODS层,是业务层与数据仓库的隔离层,在该层可以把业务表分的更细

Data Warehouse Base

DWB

数据仓库基础数据层,
存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层

Data Warehouse Service

DWS

服务数据层,基于DWB上的基础数据,主要整合汇总最终的结果供应用层使用,一般是宽表和高度压缩表。

Data Warehouse History

DWH

该层不在数据仓库设计的范围之内,按照业务新增的数据层,主要储存历史数据

Data Warehouse Exception

DWE

该层不在数据仓库设计的范围之内,按照业务新增的数据层,主要储存异常数据

Enterprise Data Warehouse

EDW

作为企业唯一的数据仓库,EDW提供统一的数据服务,查询结果有效一致。数据设计支持跨部门,支持海量数据,并支持大量的查询请求。

Data Mart

DM

和EDW类似,但更专注于部门级别而不是公司级别的统一数据服务。提供EDW不能提供的,针对部门的特殊数据服务需求

BI/Analytic Database

BID/AD

为商业智能和分析而优化的数据处理技术。包括数据清理,ETL,数据挖掘等。生产报表,也支持adhoc查询,数据反范式设计。

Data Lake Database

DLD

该层存储非加工数据,比如日志、视频等,以后结构化数据,并且不分类,
没有为了特定程序进行设计和加工。

 

 

详细资料请参考:https://blog.csdn.net/xfg0218/article/details/85092196

3 Greenplum 集群安装

4 Greenplum 初级使用

4.1 Greenplum 常用命令列表

4.1.1 常用命令列表

进入到安装目录下的bin目录下,查看常用的使用命令:

psql / clusterdb / createdb / dropdb / dropuser / gpbackup / gpcheck / gpcopy / gp_dump / gpkafka / gpload / gpssh / gpstart / gpstate / gpstop / pg_ctl / pg_dump / pg_dumpall / postgres / postmaster / psql

4.2 PSQL命令实例

4.2.1 PSQL客户端的安装

4.2.1.1 在线安装客户端

yum install postgresql -y

4.2.1.2 导入密码

如果是在非数据库集群中使用psql加载数据需要配置数据库的密码,例如以下方式:

export PGPASSWORD=123456

psql  -d chinadaas -h 192.168.209.11 -p 5432 -U gpadmin

或使用

 

psql  -d chinadaas -h 192.168.209.11 -p 5432 -U gpadmin -W 123456

4.2.2 PSQL命令的使用

4.2.2.1 PSQL登录到数据库

$ psql --help

This is psql 8.3.23, the PostgreSQL interactive terminal (Greenplum version).

 

Usage:

  psql [OPTION]... [DBNAME [USERNAME]]

 

General options:

  -c, --command=COMMAND    run only single command (SQL or internal) and exit

  -d, --dbname=DBNAME      database name to connect to (default: "gpadmin")

  -f, --file=FILENAME      execute commands from file, then exit

  -l, --list               list available databases, then exit

  -v, --set=, --variable=NAME=VALUE

                           set psql variable NAME to VALUE

  -X, --no-psqlrc          do not read startup file (~/.psqlrc)

  -1 ("one"), --single-transaction

                           execute command file as a single transaction

  --help                   show this help, then exit

  --version                output version information, then exit

 

Input and output options:

  -a, --echo-all           echo all input from script

  -e, --echo-queries       echo commands sent to server

  -E, --echo-hidden        display queries that internal commands generate

  -L, --log-file=FILENAME  send session log to file

  -n, --no-readline        disable enhanced command line editing (readline)

  -o, --output=FILENAME    send query results to file (or |pipe)

  -q, --quiet              run quietly (no messages, only query output)

  -s, --single-step        single-step mode (confirm each query)

  -S, --single-line        single-line mode (end of line terminates SQL command)

 

Output format options:

  -A, --no-align           unaligned table output mode

  -F, --field-separator=STRING

                           set field separator (default: "|")

  -H, --html               HTML table output mode

  -P, --pset=VAR[=ARG]     set printing option VAR to ARG (see \pset command)

  -R, --record-separator=STRING

                           set record separator (default: newline)

  -t, --tuples-only        print rows only

  -T, --table-attr=TEXT    set HTML table tag attributes (e.g., width, border)

  -x, --expanded           turn on expanded table output

 

Connection options:

  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")

  -p, --port=PORT          database server port (default: "5432")

  -U, --username=USERNAME  database user name (default: "gpadmin")

  -w, --no-password        never prompt for password

  -W, --password           force password prompt (should happen automatically)

 

For more information, type "\?" (for internal commands) or "\help" (for SQL

commands) from within psql, or consult the psql section in the PostgreSQL

documentation.

 

Report bugs to <bugs@greenplum.org>.

 

 

以上常用的参数如下所示:

-d  链接数据库的名字,默认的名字是gpadmin

-h  数据库服务器链接地址,默认的是localhost

-p  数据库服务的端口

-U  数据库用户名

-W 链接用户密码

 

实例展示

$ psql  -d chinadaas -h 192.168.209.11 -p 5432 -U gpadmin -W 123456

 

 

进入数据后可以查看帮助信息

chinadaas=# help

You are using psql, the command-line interface to PostgreSQL.

Type:  \copyright for distribution terms

       \h for help with SQL commands

       \? for help with psql commands

       \g or terminate with semicolon to execute query

       \q to quit

 

4.2.2.2 COPY 命令参数说明

4.2.2.2.1 COPY导入参数说明

COPY table [(column [, ...])] FROM {'file' | STDIN}

     [ [WITH]

       [BINARY]

       [OIDS]

       [HEADER]

       [DELIMITER [ AS ] 'delimiter']

       [NULL [ AS ] 'null string']

       [ESCAPE [ AS ] 'escape' | 'OFF']

       [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']

       [CSV [QUOTE [ AS ] 'quote']

            [FORCE NOT NULL column [, ...]]

       [FILL MISSING FIELDS]

       [[LOG ERRORS]  

       SEGMENT REJECT LIMIT count [ROWS | PERCENT] ]

4.2.2.2.2 COPY 导出参数说明

COPY {table [(column [, ...])] | (query)} TO {'file' | STDOUT}

      [ [WITH]

        [ON SEGMENT]

        [BINARY]

        [OIDS]

        [HEADER]

        [DELIMITER [ AS ] 'delimiter']

        [NULL [ AS ] 'null string']

        [ESCAPE [ AS ] 'escape' | 'OFF']

        [CSV [QUOTE [ AS ] 'quote']

             [FORCE QUOTE column [, ...]] ]

      [IGNORE EXTERNAL PARTITIONS ]

4.2.2.3 使用COPY导出数据

4.2.2.3.1 普通导出数据

psql -U gpadmin  -d chinadaas  -h 192.168.209.11 -p 5432 -c "copy (select * from tablename)  to 'filepath' WITH DELIMITER AS E'\u0001'  NULL as 'null string'  "

 

tablename 表的名字

filepath 保存文件的路径

E'\u0001' 字段之间的分隔符,是二进制的,二进制显示为SOH,也可以是其他的分隔符,详见https://blog.csdn.net/xfg0218/article/details/80901752

 

注意:如果在非集群上master节点上执行命令请在copy前加\即为:\copy 会把文件落到本机器上

 

4.2.2.3.2 查看导出的数据

查看导出的数据

以上的分隔符便是SOH,二进制符号

4.2.2.3.3 导出数据带标题

# psql -U gpadmin  -d stagging  -h 192.168.209.11 -p 5432 -c "copy (select * from xiaoxu.table2)  to '/home/xiaoxu/table2.csv' WITH DELIMITER AS E'\u0001'  NULL as 'null string'