zoukankan      html  css  js  c++  java
  • GreenPlum 大数据平台--分区表(二)

    01,创建分区表

    [PARTITION BY partition_type (column)
        [SUBPARTITION BY partition_type (column)]
            [SUBPARTITION TEMPLATE (template_spec)]
        [...]
        (partition_spec)
            |[SUBPARTITION BY partition_type(column)]
             [...]
        (partition_spec)
            [(subpartition_spec
                [(...)]
            )]
    ]
    and partition_element is:
    
    DEFAULT PARTITION name
    | [PARTITION name] VALUES (list_value[,...])
    | [PARTITION name]
        START ([datatype] 'start_value') [INCLUSIVE|EXCLUSIVE]
        [ END ([datatype] 'end_value') [INCLUSIVE|EXCLUSIVE]
        [ EVERY ([datatype] [number|INTERVAL] 'interval_value')]
    | [PARTITION name]
        END ([DATATYPE] 'end_value') [INCLUSIVE|EXCLUSIVE]
        [ EVERY ([datatype] [number|INTERVAL] 'interval_value')]
        [ with (partition_storage_parameter=value [,...])]
        [ TABLESPACE tablespace]


    Tips
    通过实验得到:向主表插入数据时,数据会被自动存放至相应的分区表。
    也可以直接向分区子表插入符合条件的数据,
    当向分区子表插入不符合条件的额数据时,会提示:

    [Err] ERROR: Trying to insert row into wrong partition (seg1 hadoop3:40000 pid=6679)
    DETAIL: Expected partition: test_partition_range_1_prt_p20111231, provided partition: test_partition_range_1_prt_p20111230

    02,按时间分区

    create table public.test_partition_range(
      id numeric,
      name character varying(32),
      dw_end_date date,
    ) distributed by(id)
    PARTITION BY range(dw_end_date)
    (
        PARTITION p20111230 START ('2011-12-30'::date) END ('2011-12-31'::date),
        --...
    );


    03,使用Every分区

    create table test.test_partition_every(
      id numeric,
      name character varying(32),
      dw_end_date date
    ) distributed by(id)
    partition by range(dw_end_Date)
    (
      partition p201112 start('2011-12-1'::date) end ('2011-12-31'::date)
      every ('1 days'::interval)
    );

    04,使用list分区

    create table test.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'),
      default partition other_city
    );

    05,修改分区表

    ALTER DEFAULT PARTITION
    DROP DEFAULT PARTITION [IF EXISTS]
    DROP PARTITION [IF EXISTS] {
      partition_name
      | FOR (RANK(number))
      | FOR (value)
    }
    [CASCADE]
    TRUNCATE DEFAULT PARTITION
    TRUNCATE PARTITION {
      partition_name
      | FOR (RANK(number))
      | FOR (value)
    }
    RENAME DEFAULT PARTITION TO new_partition_name
    RENAME PARTITION {
      partition_name
      | FOR (RANK(number))
      | FOR (value)
    }
    TO new_partition_name
    ADD DEFAULT PARTITION NAME [(subpartition_spec)]
    ADD PARTITION [name] partition_element
      [(subpartition_spec)]
    EXCHANGE PARTITION {
      partition_name
      | FOR (RANK(number))
      | FOR (value)
    } WITH TABLE TABLE_NAME
      [WITH|WITHOUT VALIDATION]
    EXCHANGE EFAULT PARTITION WITH TABLE TABLE_NAME
      [WITH|WITHOUT VALIDATION]
    SET SUBPARTITION TEMPLATE (subpartition_spec)
    SPLIT DEFAULT PARTITION {
        AT (list_value)
      |START([datatype] range_value) [INCLUSIVE|EXCLUSIVE]
       END ([datatype]) range_value) [INCLUSIVE|EXCLUSIVE]
    }
    [INTO (PARTITION new_partition_name,
           PARTITION default_partition_name)]
    SPLIT DPARTITION {
      partition_name
      | FOR (RANK(number))
      | FOR (value)
    } AT(value)
    [INTO (PARTITION partition_name, PARTITION partition_name]

      06,新增分区

    alter table test.test_partition_every add partition p20120105_6
    start ('2012-01-05'::date) END ('2012-01-07'::date);

      07,drop/truncate分区

    alter table test.test_partition_every drop partition p20120105_6;
    
    alter table test.test_partition_every truncate partition p20120105_6;

      08,拆分分区

    alter table test.test_partition_every split partition p20120105_6
    at(('2012-01-06'::date)) into (partition p20120105,partition p20120106);

      09,交换分区

    alter table test.test_partition_every exchange partition p20120102 with table test.test_on_partition;
  • 相关阅读:
    Linux服务器使用tar加密压缩文件
    ssh-copy-id使用非默认22端口
    Nginx日志分割脚本
    MySQL的yum源
    vSphere Client开启虚拟机提示:出现了常规系统错误: 由于目标计算机积极拒绝,无法连接。
    ESXi主机遗忘密码重置密码
    扩容swap交换分区空间
    ESXi上的固态硬盘识别为非SSD
    VMware Vcenter Server 6.0忘记密码
    Centos6与Centos7区别
  • 原文地址:https://www.cnblogs.com/kingle-study/p/10550987.html
Copyright © 2011-2022 走看看