1、create users and roles:
Gp类似于oracle使用角色概念管理db,角色可以是一个用户也可以是一个组,一般用户都拥有login属性,在db刚初始化的时候只有gpadmin有权限创建角色
创建角色:
◦ createuser -p username
Create DataBase(分为新建数据库和克隆数据库)
userName | 角色 |
tablespace | 命名空间 |
encoding | 数据库编码 |
dbname | 数据库名称 |
teamplate | 数据库模板(可选)在使用已有数据库模板克隆数据库时才有此选项 |
克隆:CREATE DATABASE dbname OWNER freeoa TEMPLATE template1 TABLESPACE tablespacename;
新建:CREATE DATABASE new_dbname;
2、create table(支持PostgreSQL的主外键约束)创建非外部表
username | 数据库角色 |
dbname | 数据库名称 |
schema | 数据库模式名称 |
columnname | 字段名称 |
columntype | 字段类型 |
isprimary | 是否主键 |
checkConstraints | 检查建约束 |
isNotNull | 非空约束 |
isUnique | 是否唯一(唯一约束) |
accuracy | 字段类型精度 |
distributionPolicy | 分布式政策(可选) |
partition | 分区 |
storageModel | 表的存储模式(即为with语句) |
1、gp_create_table_random_default_distribution参数设置了默认分布策略,在create table没有指定分布政策时启用默认值。
分布政策分为:hash分布和随机分布(hash分布中的列需对每一行数据是唯一的)
例子:
CREATE TABLE products
(name varchar(40),
prod_id integer,
supplier_id integer)
DISTRIBUTED BY (prod_id);
2、存储模式:
CREATE TABLE bar (a int,b text)
WITH (appendonly=true)
DISTRIBUTED BY (a);
这里创建了一个append-optimized 表,注意append-optimized 表不支持更新和删除操作
3、Create external table 创建外部表
tablename | 表名 |
isReadTable | 只读表还是写表 |
isRegular | 常规外部表还是动态数据源外部表 |
columName | 字段名(外部表中字段没有约束和默认值) |
isUsedLike | 是否使用like子句进行创建外部表 |
likeClause | 如果使用like字句,like字句如下 |
dateType | 字段类型 |
location | 为外部表加载数据的地址,格式为:protocol://host[:port]/path/file' [, ...] |
onClause | On字句(可选) |
format | 指定数据来源格式,可取值为(TEXT | CSV | AVRO | PARQUET) |
delimiter | 分割符(可选) |
NULLValue | 指定一个代表null值得字符串(可选) |
escape | 转移字符(可选) |
newline | 换行符(可选) |
header | 指定读入数据文件的标题行(可选) |
quote | 指定format为csv模式时的引用符号,默认为双引号(可选) |
forceNotNull | 指定只读表读入时强制非空的字段 |
forceQuote | 指定CSV模式下外部写表的强制引用列 |
isFillMissingFields | 用于在只读表的csv和text模式下指定是否填充缺失字段 |
encoding | 指定的外部表的字符集编码 |
rejectLimit | 段拒绝限制(可选项,可以指定为rows或者percent,且只适用于只读表) |
distributionpolic | 分区政策(只用于可写的外部表) |
外部表语法:
详情参见:
https://gpdb.docs.pivotal.io/580/ref_guide/sql_commands/CREATE_EXTERNAL_TABLE.html
CREATE [READABLE]EXTERNAL TABLE table_name
(column_namedata_type[,...]| LIKE other_table )
LOCATION('file://seghost[:port]/path/file' [,...])
|('gpfdist://filehost[:port]/file_pattern[#transform=trans_name]'
[,...]
|('gpfdists://filehost[:port]/file_pattern[#transform=trans_name]'
[,...])
|('gphdfs://hdfs_host[:port]/path/file')
|('pxf://path-to-data?PROFILE[&custom-option=value[...]]'))
| ('s3://S3_endpoint[:port]/bucket_name/[S3_prefix]
[region=S3-region]
[config=config_file]')
[ON MASTER]
FORMAT 'TEXT'
[([HEADER]
[DELIMITER [AS]'delimiter' | 'OFF']
[NULL [AS]'null string']
[ESCAPE [AS]'escape' | 'OFF']
[NEWLINE [AS ]'LF' | 'CR' | 'CRLF']
[FILL MISSING FIELDS])]
| 'CSV'
[([HEADER]
[QUOTE [AS]'quote']
[DELIMITER [AS]'delimiter']
[NULL [AS]'null string']
[FORCE NOT NULL column[,...]]
[ESCAPE [AS]'escape']
[NEWLINE [AS ]'LF' | 'CR' | 'CRLF']
[FILL MISSING FIELDS])]
| 'AVRO'
| 'PARQUET'
| 'CUSTOM' (Formatter=<formatter_specifications>)
[ENCODING 'encoding' ]
[[LOG ERRORS]SEGMENT REJECT LIMIT count
[ROWS | PERCENT]]
CREATE [READABLE]EXTERNAL WEB TABLE table_name
(column_namedata_type[,...]| LIKE other_table )
LOCATION('http://webhost[:port]/path/file' [,...])
| EXECUTE 'command' [ON ALL
| MASTER
|number_of_segments
| HOST ['segment_hostname']
| SEGMENT segment_id]
FORMAT 'TEXT'
[([HEADER]
[DELIMITER [AS]'delimiter' | 'OFF']
[NULL [AS]'null string']
[ESCAPE [AS]'escape' | 'OFF']
[NEWLINE [AS ]'LF' | 'CR' | 'CRLF']
[FILL MISSING FIELDS])]
| 'CSV'
[([HEADER]
[QUOTE [AS]'quote']
[DELIMITER [AS]'delimiter']
[NULL [AS]'null string']
[FORCE NOT NULL column[,...]]
[ESCAPE [AS]'escape']
[NEWLINE [AS ]'LF' | 'CR' | 'CRLF']
[FILL MISSING FIELDS])]
| 'CUSTOM' (Formatter=<formatter specifications>)
[ENCODING 'encoding' ]
[[LOG ERRORS]SEGMENT REJECT LIMIT count
[ROWS | PERCENT]]
4、create view 创建视图
CREATE VIEW comedies AS SELECT * FROM films WHERE kind = 'comedy';
viewname | 视图名 |
tablename | 视图来源表名 |
condition | Where限制条件 |