`
weitao1026
  • 浏览: 1058289 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GreenPlum数据库修改表的OWNER、插入空值数据及常用数据类型

 
阅读更多

在一次建表时,使用了错误的用户,把表建在了gpadmin用户下,虽然GreenPlum数据库在对表操作的时候主要用的是SCHEMA而不是用户,但是涉及到权限的问题,还是绝对修改表的OWNER。在ORACLE数据库中,是不支持直接修改表的OWNER的,但是GreenPlum数据库是支持的。GreenPlum数据库中SCHEMA和OWNER的关系,通过下面的信息即可很直观的看出。

1 dbdream=# \d
2                  List of relations
3  Schema |     Name      | Type  |  Owner  | Storage
4 --------+---------------+-------+---------+---------
5  public | med_ord_pgm_d | table | gpadmin | heap
6  public | ord_pay       | table | gpadmin | heap
7  public | t_ctas        | table | dbdream | heap
8  (3 rows)

GreenPlum数据库的SCHEMA和用户和ORACLE的概念完全不同,从上面的信息可以看出,一个SCHEMA可以包含多个用户的对象,对表操作时,使用的是SCHEMA.TABLENAME而不是OWNER.TABLENAME,请看如下演示。

01 dbdream=> \c
02 You are now connected to database "dbdream" as user "dbdream".
03 dbdream=> select * from dbdream.t_ctas;
04 ERROR:  schema "dbdream" does not exist
05 LINE 1: select * from dbdream.t_ctas;
06  
07 dbdream=> select * from public.t_ctas;
08  name | id
09 ------+----
10 (0 rows)

在同意SCHEMA里面,不同的用户不能创建相同名字的对象。

1 dbdream=> \c
2 You are now connected to database "dbdream" as user "dbdream".
3 dbdream=> create table med_ord_pgm_d(id int);
4 NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.
5 HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
6 ERROR:  relation "med_ord_pgm_d" already exists

而不同的用户直接访问对方表需要有对方的授权才可以,当然超级用户除外。

1 dbdream=> select * from public.med_ord_pgm_d;
2 ERROR:  permission denied for relation med_ord_pgm_d

要更改表的OWNER,可以通过alter table命令直接修改。

01 dbdream=# ALTER TABLE ORD_PAY owner to dbdream;
02 ALTER TABLE
03  
04 dbdream=# \d
05                  List of relations
06  Schema |     Name      | Type  |  Owner  | Storage
07 --------+---------------+-------+---------+---------
08  public | med_ord_pgm_d | table | gpadmin | heap
09  public | ord_pay       | table | dbdream | heap
10  public | t_ctas        | table | dbdream | heap
11  (3 rows)

GreenPlum数据库在插入空值方面,字符类型的字段可以直接用‘’代替,这和ORACLE数据库一样。

01 dbdream=> \d t_ctas
02            Table "public.t_ctas"
03  Column |         Type          | Modifiers
04 --------+-----------------------+-----------
05  name   | character varying(10) |
06  id     | integer               |
07 Distributed by: (name)
08 Tablespace: "tbs1"
09  
10 dbdream=> insert into t_ctas values ('',1);
11 INSERT 0 1

但是对数字和日期类型来说,这种方式就不行了,’’在GreenPlum数据库中表示的是字符类型。

1 dbdream=> insert into t_ctas values('a','');
2 ERROR:  invalid input syntax for integer: ""

对于数字或日期类型的数据,如果要插入控制,要使用null明确指定。

1 dbdream=> insert into t_ctas values('a',null);
2 INSERT 0 1

下面顺便介绍下GreenPlum数据库常用的数据类型,常用的整型数字类型有int、bigint、smallint,常用的小数类型有numeric和decimal,常用的自增类型有serial和bigserial。下面创建一张数字类型的表。

01 dbdream=> create table t_int(autoinc serial,small smallint,standard int,big bigint,acc numeric) Distributed by(autoinc);
02 NOTICE:  CREATE TABLE will create implicit sequence "t_int_autoinc_seq" for serial column "t_int.autoinc"
03 CREATE TABLE
04 dbdream=> \d t_int
05                              Table "public.t_int"
06   Column  |   Type   |                        Modifiers                       
07 ----------+----------+---------------------------------------------------------
08  autoinc  | integer  | not null default nextval('t_int_autoinc_seq'::regclass)
09  small    | smallint |
10  standard | integer  |
11  big      | bigint   |
12  acc      | numeric  |
13 Distributed by: (autoinc)
14 Tablespace: "tbs1"

smallint是短整型数子类型,支持范围是负32K(32768)到正32K-1(32767)。

int是标准的整型,支持范围是正负2G(-2147483648到2147483647)。

bigint是长整型数字类型,支持正负9E(-9223372036854775808到9223372036854775807)。

numeric是小数类型,没有限制。

serial是自增长数字类型,支持范围是1到2G(最大数值2147483647)。

bigserial是长类型自增长数字类型,最大支持9E长度(最大数值9223372036854775807)。

再看看字符类型,字符类型和其他数据库基本一样,也是分定长和变长类型,下面创建一张包含这些类型的表。

01 dbdream=> create table t_char(c char(10),v varchar(10),t text) DISTRIBUTED BY(c);
02 CREATE TABLE
03 dbdream=> \d t_char
04            Table "public.t_char"
05  Column |         Type          | Modifiers
06 --------+-----------------------+-----------
07  c      | character(10)         |
08  v      | character varying(10) |
09  t      | text                  |
10 Distributed by: (c)
11 Tablespace: "tbs1"

char类型是定长字符类型,最大支持10485760字节,不足以空格补齐。

varchar类型是变长字符类型,最大支持10485760字节。

text字符类型,没有长度限制。

在看下时间类型的字段,主要能用到的时间类型包括date、time、timestamp类型,下面创建一张时间类型字段的表。

01 dbdream=> create table t_time(d date,t time,ts timestamp) DISTRIBUTED BY(d);
02 CREATE TABLE
03 dbdream=> \d t_time
04               Table "public.t_time"
05  Column |            Type             | Modifiers
06 --------+-----------------------------+-----------
07  d      | date                        |
08  t      | time without time zone      |
09  ts     | timestamp without time zone |
10 Distributed by: (d)
11 Tablespace: "tbs1"

下面插入一条数据,看看数据存储格式。

1 dbdream=> insert into t_time values(current_date,current_time,current_timestamp);
2 INSERT 0 1
3 dbdream=> select * from t_time;
4      d      |        t        |             ts            
5 ------------+-----------------+----------------------------
6  2016-01-29 | 17:29:49.197889 | 2016-01-29 17:29:49.197889
7 (1 row)

data类型存的仅是日期类型的数据(年月日),这和ORACLE数据库的date类型不一样。

time类型存放的是一天以内的时间(时分秒),精确到毫秒。

timestamp类型存放的是日期和时间(data+time)类型的数据,精确到毫秒。

本文固定链接: http://www.dbdream.com.cn/2016/01/29/greenplum%e6%95%b0%e6%8d%ae%e5%ba%93%e4%bf%ae%e6%94%b9%e8%a1%a8%e7%9a%84owner%e3%80%81%e6%8f%92%e5%85%a5%e7%a9%ba%e5%80%bc%e6%95%b0%e6%8d%ae%e5%8f%8a%e5%b8%b8%e7%94%a8%e6%95%b0%e6%8d%ae%e7%b1%bb/ | 信春哥,系统稳,闭眼上线不回滚!

该日志由 dbdream 于2016年01月29日发表在 GreenPlum 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: GreenPlum数据库修改表的OWNER、插入空值数据及常用数据类型 | 信春哥,系统稳,闭眼上线不回滚!
关键字: greenplum
分享到:
评论

相关推荐

    Greenplum数据库文档(中文版)

    此外,为了提高连接效率,建议在用于连接的不同表之间使用相同的数据类型。 #### 存储方式的选择 文档提供了关于如何根据不同的数据访问模式选择合适的存储方式的建议: - **堆存储**:适用于需要迭代批量更新或...

    GreenPlum数据库.ppt

    GreenPlum数据库是一种高效的大数据处理平台,源于PostgreSQL开源数据库,但针对大规模并行处理(MPP)进行了优化。它提供了企业级的数据仓库解决方案,适用于大数据分析和处理。GreenPlum的核心优势在于其分布式...

    GREENPLUM数据库参考文件

    以下是一个详细的过程,展示如何在GREENPLUM中通过外部表查询Oracle数据库中的数据: 1. **配置ORACLE客户端**:首先,您需要在GREENPLUM的MASTER节点上安装Oracle客户端,以便能够与Oracle数据库通信。 2. **启用...

    greenplum数据库jdbc驱动下载

    6. **类型映射**:将Java数据类型与Greenplum数据库的数据类型进行映射。 7. **元数据获取**:获取数据库的结构信息,如表名、列名、索引等。 8. **错误处理**:捕获和处理与数据库交互时可能出现的异常。 在实际...

    Greenplum 数据库最佳实践

    Greenplum数据库是一种基于MPP(大规模并行处理)架构的关系型数据库,专为数据仓库和大数据分析而设计。它由Greenplum公司开发,现在是Pivotal软件公司的产品之一。Greenplum具备处理PB级别数据的能力,支持复杂的...

    Greenplum数据库使用总结(5.11版本).pdf

    - **创建可写外部表**:如何创建可以插入数据的外部表。 - **杀掉gpfdist进程**:在必要时如何停止gpfdist进程。 以上知识点涵盖了Greenplum数据库的整体架构信息、数据库常用概念、集群安装配置、以及初级使用等...

    Greenplum 数据库最佳实践.pdf

    行存储适合需要频繁更新或插入数据的场景,而列存储适合需要频繁访问少量字段的场景。 压缩 Greenplum 数据库支持压缩功能,可以提高系统的 I/O 性能。在字段级别配置压缩,并且需要平衡压缩比和压缩性能之间的...

    Greenplum数据库开发基础.pptx

    3. Greenplum数据库特性: Greenplum数据库具有自动化的并行处理机制、线性扩展性、客户端访问及第三方工具支持等特点。 4. Greenplum数据库优势:Greenplum数据库的MPP架构使其具有高性能、可扩展性和高可用性等...

    greenplum数据库 v5.8.1

    绿松石数据库(Greenplum)是一款基于MPP(大规模并行处理)架构的企业级数据仓库解决方案,由Pivotal公司开发,现已被思科收购。它专为大数据分析设计,能够处理PB级别的数据,并提供高性能、可扩展性和经济高效的...

    Greenplum 数据库基础培训V1.2

    一个还比较不错的greenplum数据库基础培训,中文版本

    Greenplum数据库基础培训.pptx

    外部表是Greenplum的一个重要特性,允许用户将数据存储在数据库外部,如HDFS或文件系统中,然后通过SQL进行查询,实现灵活的数据导入和导出。并行加载则利用MPP架构加速大数据的加载过程,提高整体性能。 资源管理...

    Greenplum数据库巡检报告1

    绿盟Greenplum数据库巡检报告是对数据库健康状况和运行环境进行系统性检查的重要文档,旨在确保数据库高效、稳定地运行。以下将详细介绍报告中提到的关键知识点: 1. **查看集群当前系统时间**: 系统时间是操作...

    Greenplum 数据库架构分析及CTE实现_杨瑜@Pivotal.pdf

    Greenplum数据库是一种大规模并行处理(MPP)数据库,专门为数据仓库和大数据分析工作负载而设计。它支持标准的SQL语言,并遵守ANSISQL2008标准,具备OLAP功能,同时兼容JDBC和ODBC接口。Greenplum的核心特性是其...

    greenplum数据库学习资料

    总的来说,掌握Greenplum数据库技术需要对MPP架构有深入理解,熟悉其特有的数据分布和查询优化策略,同时结合实际操作和案例分析,才能更好地发挥其在大数据分析中的优势。希望这份学习资料能助你在Greenplum的学习...

    开源大数据引擎:分布式Greenplum数据库内核分析

    在分析开源大数据引擎时,分布式Greenplum数据库内核是一个值得深入探讨的主题。Greenplum作为一个大规模并行处理(MPP)架构的开源数据库系统,特别适用于大数据存储、计算、分析和挖掘的应用场景。在本篇文章中,...

    Greenplum数据库权限管理1

    它允许管理员精确地控制不同用户和角色对数据库对象的访问权限,从而防止未经授权的数据访问或修改。 1.1 概述 Greenplum的权限系统遵循PostgreSQL的模型,允许管理员为不同的用户或角色定义权限级别。权限分为多种...

    Greenplum数据库调优1

    在大数据处理领域,Greenplum数据库因其高效的数据处理能力和优秀的并行计算性能而受到广泛关注。然而,为了确保其性能最大化,数据库调优是必不可少的一环。本文将深入探讨Greenplum数据库的调优策略,主要涵盖系统...

    Greenplum数据库文档(中文)

    **绿盟数据库(Greenplum)是基于MPP(大规模并行处理)架构的企业级数据仓库解决方案,专门设计用于处理海量数据。这份中文文档详细介绍了Greenplum的系统架构和基本语法,对于理解和操作Greenplum数据库至关重要。...

    greenplum数据库安装文档.docx

    greenplum数据库安装文档

    GreenPlum数据库详细安装过程.docx

    4.4. 使用FlashXP上传GreenPlum数据 31 4.5. 使用putty.exe工具配置GreenPlum数据库 35 4.6. GreenPlum数据库配置详情 42 4.6.1. GrennPlum数据库的初始化 49 4.6.2. 修改GreenPlum数据库账户的权限 53

Global site tag (gtag.js) - Google Analytics