Greenplum中定义数据库对象之创建与管理数据库

喜你入骨 提交于 2020-08-12 10:34:59

定义数据库对象

创建与管理数据库

通过\h命令查看创建数据库的语法,如下所示:

testdw-# \h create database

Command:     CREATE DATABASE

Description: create a new database

Syntax:

CREATE DATABASE name

    [ [ WITH ] [ OWNER [=] dbowner ]

           [ TEMPLATE [=] template ]

           [ ENCODING [=] encoding ]

           [ LC_COLLATE [=] lc_collate ]

           [ LC_CTYPE [=] lc_ctype ]

           [ TABLESPACE [=] tablespace ]

           [ CONNECTION LIMIT [=] connlimit ] ]                 连接限制

说明:

  • 一个GPDB系统可以有多个数据库;
  • 关于数据库模版:可以基于模版创建数据库,缺省数据库模版为template1,GP系统内部使用模板:template0和postgres;
  • 创建数据库应该具备CREATEDB权限或者SUPERUSER身份;
  • 通过CREATEDATABASE 命令创建;

template1=# create database devdw;

CREATE DATABASE

  • 克隆一个数据库

template1=#\c devdw                                     使用\c连接数据库                                    

You are now connected to database "devdw" as user "gpadmin".

devdw=# create table tab_01(id int);                          创建表

NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.

HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.

CREATE TABLE

devdw=# \d                                              使用\d查看表信息

              List of relations

 Schema |  Name  | Type  |  Owner  | Storage

--------+--------+-------+---------+---------

 public | tab_01 | table | gpadmin | heap

(1 row)

devdw=# insert into tab_01 values(101);                      向表中插入数据

INSERT 0 1

devdw=# select * from tab_01;                             查询表中信息

 id 

-----

 101

(1 row)

template1=# create database col_devdw template devdw;           使用devdw作为模板创建克隆数据库

CREATE DATABASE

template1=# \l                                            使用\l命令查看当前所有数据库

                  List of databases

   Name    |  Owner  | Encoding |  Access privileges 

-----------+---------+----------+---------------------

 col_devdw | gpadmin | UTF8     |

 devdw     | gpadmin | UTF8     |

 postgres  | gpadmin | UTF8     |

 template0 | gpadmin | UTF8     | =c/gpadmin         

                                : gpadmin=CTc/gpadmin

 template1 | gpadmin | UTF8     | =c/gpadmin         

                                : gpadmin=CTc/gpadmin

 testdw    | gpadmin | UTF8     |

(6 rows)

 

template1=# \c col_devdw

You are now connected to database "col_devdw" as user "gpadmin".

col_devdw=# \l

                  List of databases

   Name    |  Owner  | Encoding |  Access privileges 

-----------+---------+----------+---------------------

 col_devdw | gpadmin | UTF8     |

 devdw     | gpadmin | UTF8     |

 postgres  | gpadmin | UTF8     |

 template0 | gpadmin | UTF8     | =c/gpadmin         

                                : gpadmin=CTc/gpadmin

 template1 | gpadmin | UTF8     | =c/gpadmin         

                                : gpadmin=CTc/gpadmin

 testdw    | gpadmin | UTF8     |

(6 rows)

 

col_devdw=# \d

              List of relations

 Schema |  Name  | Type  |  Owner  | Storage

--------+--------+-------+---------+---------

 public | tab_01 | table | gpadmin | heap

(1 row)

  • 查看数据库列表:可以通过查询pg_database系统日志表

template1=# \l

                  List of databases

   Name    |  Owner  | Encoding |  Access privileges 

-----------+---------+----------+---------------------

 devdw     | gpadmin | UTF8     |

 gpadmin   | gpadmin | UTF8     |

 postgres  | gpadmin | UTF8     |

 template0 | gpadmin | UTF8     | =c/gpadmin         

                                : gpadmin=CTc/gpadmin

 template1 | gpadmin | UTF8     | =c/gpadmin         

                                : gpadmin=CTc/gpadmin

 testdw    | gpadmin | UTF8     |

(6 rows)

template1=# SELECT * FROM pg_database;

  datname  | datdba | encoding | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace | datconfig |              datacl     

       

-----------+--------+----------+---------------+--------------+--------------+---------------+--------------+---------------+-----------+----------------------------------

 testdw    |     10 |        6 | f             | t            |           -1 |         10899 |          803 |          1663 |           |

 postgres  |     10 |        6 | t             | t            |           -1 |         10899 |          803 |          1663 |           |

 devdw     |     10 |        6 | f             | t            |           -1 |         10899 |          803 |          1663 |           |

 template1 |     10 |        6 | t             | t            |           -1 |         10899 |          803 |          1663 |           | {=c/gpadmin,gpadmin=CTc/g

padmin}

 template0 |     10 |        6 | t             | f            |           -1 |         10899 |          803 |          1663 |           | {=c/gpadmin,gpadmin=CTc/g

padmin}

(5 rows)

  •  变更数据库:必须具备Owner或者SUPERUSER权限且使用ALTERDATABASE命令来改变DB的属性

template1=# \h ALTER DATABASE

Command:     ALTER DATABASE

Description: change a database

Syntax:

ALTER DATABASE name [ [ WITH ] option [ ... ] ]

 

where option can be:

    CONNECTION LIMIT connlimit

ALTER DATABASE name SET parameter { TO | = } { value | DEFAULT }

ALTER DATABASE name RESET parameter

ALTER DATABASE name RENAME TO newname

ALTER DATABASE name OWNER TO new_owner

template1=# alter database devdw set search_path to public,pg_catalog;

ALTER DATABASE

template1=# select * from pg_database;

  datname  | datdba | encoding | datistemplate | datallowconn | datconnlimit | datlastsysoid | datfrozenxid | dattablespace |             datconfig              |              datacl             

-----------+--------+----------+---------------+--------------+--------------+---------------+--------------+---------------+------------------------------------+----------------------------------

 testdw    |     10 |        6 | f             | t            |           -1 |         10899 |          803 |          1663 |                                    |

 postgres  |     10 |        6 | t             | t            |           -1 |         10899 |          803 |          1663 |                                    |

 col_devdw |     10 |        6 | f             | t            |           -1 |         10899 |          803 |          1663 |                                    |

 template1 |     10 |        6 | t             | t            |           -1 |         10899 |          803 |          1663 |                                    | {=c/gpadmin,gpadmin=CTc/gpadmin}

 template0 |     10 |        6 | t             | f            |           -1 |         10899 |          803 |          1663 |                                    | {=c/gpadmin,gpadmin=CTc/gpadmin}

 devdw     |     10 |        6 | f             | t            |           -1 |         10899 |          803 |          1663 | {"search_path=public, pg_catalog"} |

(6 rows)

  • 删除数据库:必须具备Owner或者SUPERUSER权限,通过CREATEDATABASE 命令删除

testdw-# \h drop database

Command:     DROP DATABASE

Description: remove a database

Syntax:

DROP DATABASE [ IF EXISTS ] name

 

template1=# drop database col_devdw;

DROP DATABASE

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!