Greeplum 系列(四) 实战

表结构

(1) 拉链表结构

create table public.member_fatdt0 (
member_id varchar(64),
phoneno varchar(64),
dw_beg_date date,
dw_end_date date,
dtype char(1),
dw_status char(1),
dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id)
partition by range (dw_end_date)
(
partition p20111201 start (date '2011-12-01') inclusive,
partition p20111202 start (date '2011-12-02') inclusive,
partition p20111203 start (date '2011-12-03') inclusive,
partition p20111204 start (date '2011-12-04') inclusive,
partition p20111205 start (date '2011-12-05') inclusive,
partition p20111206 start (date '2011-12-06') inclusive,
partition p20111207 start (date '2011-12-07') inclusive,
partition p30001231 start (date '3000-12-31') inclusive
end (date '3001-01-01') exclusive
);

(2) 增量表结构

create table public.member_delta (
member_id varchar(64),
phoneno varchar(64),
action char(1),
dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id);

(3) 临时表结构

create table public.member_tmp0 (
member_id varchar(64),
phoneno varchar(64),
dw_beg_date date,
dw_end_date date,
dtype char(1),
dw_status char(1),
dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id)
partition by list (dtype)
(
partition phis values('H'),
partition pcur values('C'),
default partition other
);

(4) 临时表结构

create table public.member_tmp1 (
member_id varchar(64),
phoneno varchar(64),
dw_beg_date date,
dw_end_date date,
dtype char(1),
dw_status char(1),
dw_ins_date date
) with (appendonly=true, compresslevel=5)
distributed by(member_id);

数据导入

1. insert

insert into public.member_delta values('mem006', '13100000006', 'I', date'2011-12-03');
insert into public.member_delta values('mem002', '13100000002', 'D', date'2011-12-03');
insert into public.member_delta values('mem003', '13100000003', 'U', date'2011-12-03');

2. insert

mem001,13100000001,2011-12-01,3000-12-31,C,I,2011-12-01
mem002,13100000002,2011-12-01,3000-12-31,C,I,2011-12-01
mem003,13100000003,2011-12-01,3000-12-31,C,I,2011-12-01
mem004,13100000004,2011-12-01,3000-12-31,C,I,2011-12-01
mem005,13100000005,2011-12-01,3000-12-31,C,I,2011-12-01
copy public.member_fatdt0_1_prt_p30001231 from '/home/gpadmin/member_his_init.dat' with delimiter ',';

3. 外部表

首先,启动 gpfdist 服务

nohup gpfdist -d /home/gpadmin/data -p 8888 -l /home/gpadmin/data/gpfdist.log &

其次,创建外部表

drop external table if exists public.member_ext;
create external table public.member_ext (
member_id varchar(64),
phoneno varchar(64),
action char(1),
dw_ins_date date
)
location ('gpfdist://localhost:8888/member_delta.dat')
format 'text' (delimiter ',' null as '' escape 'off')
encoding 'utf-8'
log errors into member_err segment reject limit 2 rows;

再编辑 /home/gpadmin/data/member_delta.dat 文件

mem001,13100000001,I,2011-12-01

最后,将外部表的数据加载到内部表

insert into public.member_delta select * from public.member_ext;

4. gpload

gpload 是对外部表的一层封装,首先编写 gpload 控制文件 gpload.yml,代码如下:

---
VERSION: 1.0.0.1
DATABASE: test
USER: gpadmin
HOST: localhost
PORT: 5432
GPLOAD:
INPUT:
- SOURCE:
LOCAL_HOSTNAME:
- master
PORT: 8888
FILE:
- /home/gpadmin/data/member_delta.dat
- COLUMNS:
- member_id: varchar(64),
- phoneno: varchar(20),
- action: char(1),
- dw_ins_date: date
- FORMAT: text
- DELIMITER: ','
- ERROR_LIMIT: 2
- ERROR_TABLE: public.member_err
OUTPUT:
- TABLE: public.member_delta
- MODE: INSERT
SQL:
- BEFORE: "truncate table public.member_delta"
- AFTER: "analyze public.member_delta"

执行 gpload 命令,结果如下:

gpload -f gpload.yml
2018-05-18 20:53:10|INFO|gpload session started 2018-05-18 20:53:10
2018-05-18 20:53:10|INFO|started gpfdist -p 8888 -P 8889 -f "/home/gpadmin/data/member_delta.dat" -t 30
2018-05-18 20:53:11|INFO|running time: 0.85 seconds
2018-05-18 20:53:11|INFO|rows Inserted = 1
2018-05-18 20:53:11|INFO|rows Updated = 0
2018-05-18 20:53:11|INFO|data formatting errors = 0
2018-05-18 20:53:11|INFO|gpload succeeded

5. 可执行的外部表

drop external table if exists public.member_ext;
create external web table public.member_ext (
member_id varchar(64),
phoneno varchar(64),
action char(1),
dw_ins_date date
)
execute 'cat /home/gpadmin/data/member_delta.dat' on master
format 'text' (delimiter ',' null as '' escape 'off')
encoding 'utf-8';

create table public.test_partition_list (

member_id numeric,

city character varying(32)

) distributed by(member_id)

partition by list(city)

(

partition guangzhou values('guangzhou'),

partition hangzhou values('hangzhou'),

partition shanghai values('shanghai'),

partition beijing values('beijing'),

default partition other_city

);


每天用心记录一点点。内容也许不重要,但习惯很重要!

Greeplum 系列(四) 实战的更多相关文章

  1. 前端构建大法 Gulp 系列 (四):gulp实战

    前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gulp专家 前 ...

  2. WCF开发实战系列四:使用Windows服务发布WCF服务

    WCF开发实战系列四:使用Windows服务发布WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 上一篇文章中我们通过编写的控制台程序或WinForm程序来为本 ...

  3. Greeplum 系列(四) 数据的装载与卸裁

    Greeplum 系列(四) 数据的装载与卸裁 装载数据有以下种方法: insert copy 外部表 gpload 下面以 member_delta 表为例分别介绍这四种方法. create tab ...

  4. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  5. Greeplum 系列(八) 数据维护

    Greeplum 系列(八) 数据维护 一.事务管理 begin(start transaction) # 开始事务 savepoint # 保存事务回滚点 rollback # 回滚事务 end(c ...

  6. Greeplum 系列(六) 备份与恢复

    Greeplum 系列(六) 备份与恢复 http://www.dbdream.com.cn/category/greenplum/ 先介绍几个命令查看 Greenplum 集群状态: # 1. 查看 ...

  7. Greeplum 系列(三) 基本用法

    Greeplum 系列(三) 基本用法 <PostgreSQL 教程>:https://www.yiibai.com/postgresql 一.Greeplum 登陆与创建 1.1 登陆 ...

  8. Netty4.x中文教程系列(四) 对象传输

    Netty4.x中文教程系列(四)  对象传输 我们在使用netty的过程中肯定会遇到传输对象的情况,Netty4通过ObjectEncoder和ObjectDecoder来支持. 首先我们定义一个U ...

  9. S5PV210开发系列四_uCGUI的移植

    S5PV210开发系列四 uCGUI的移植 象棋小子          1048272975 GUI(图形用户界面)极大地方便了非专业用户的使用,用户无需记忆大量的命令,取而代之的是能够通过窗体.菜单 ...

随机推荐

  1. Erlang generic standard behaviours -- gen_server hibernate

    hibernate 主要用于在内存空闲时,通过整理进程的stack,回收进程的heap 来达到回收内存节省资源的效果. hibernate 可用于OTP 进程以及普通进程, hibernate 的官方 ...

  2. 阻塞队列之五:LinkedBlockingQueue

    一.LinkedBlockingQueue简介 LinkedBlockingQueue是一个使用链表完成队列操作的阻塞队列.链表是单向链表,而不是双向链表.采用对于的next构成链表的方式来存储对象. ...

  3. Spring AOP详解及简单应用

    Spring AOP详解   一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址: ...

  4. Rhel5.5配置Centos yum源

    ruiy哥,抛砖引玉 当你使用rhel系统时,[大部分数据库中心及政府企业选择linux服务器时通常考虑采购的版本一般不外乎是Rhel红帽及Suse,理由你懂的EcoSystem!]你没有一个红帽网络 ...

  5. C# 生成序号不足补0

    int Num=13 var code =Num.ToString().PadLeft(4, '0'); code:0013

  6. HTTP接口开发专题一(四种常见的 POST 提交数据方式对应的content-type取值)

    application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...

  7. requirejs——config

    config 函数用于requirejs的配置信息.主要包括:baseUrl.paths: 一.baseUrl: 待续

  8. 微信小程序中this关键字使用技巧

    转自:https://blog.csdn.net/qq_33956478/article/details/81348453 微信小程序中,在wx.request({});方法调用成功或者失败之后,有时 ...

  9. vagrant+docker搭建consul集群开发环境

    HashiCorp 公司推出的Consul是一款分布式高可用服务治理与服务配置的工具.关于其配置与使用可以参考这篇文章 consul 简介与配置说明. 一般,我们会在多台主机上安装并启动 consul ...

  10. 【转】运输层TCP协议详细介绍

    TCP是TCP/IP协议族中非常复杂的一个协议.它具有以下特点: 1:面向连接的运输层协议.在使用TCP协议之前,首先需要建立TCP连接.传送数据完毕后,必须释放已经建立的TCP连接. 2:一条TCP ...