GreenPlum_常用数据库命令

合集下载

gpconfig参数

gpconfig参数

gpconfig参数gpconfig参数是Greenplum数据库中用于配置和管理数据库的一组参数。

这些参数可以通过gpconfig命令进行设置和修改。

本文将介绍一些常用的gpconfig参数及其作用。

1. gp_vmem_protect_limit该参数用于限制Greenplum数据库的虚拟内存使用量。

通过设置该参数,可以避免数据库使用过多的虚拟内存导致系统崩溃。

可以根据实际情况调整该参数的值,以平衡内存使用和系统稳定性。

2. gp_resqueue_memory_policy该参数用于设置Greenplum数据库中资源队列的内存分配策略。

资源队列是用于管理并发查询的一种机制,通过设置该参数,可以控制不同用户或组的查询在内存中的优先级。

可以根据实际需求,设置不同的内存分配策略,以实现资源的合理分配和查询的优化。

3. gp_max_connections该参数用于设置Greenplum数据库的最大连接数。

连接数是指同时连接到数据库的客户端数量。

通过设置该参数,可以限制数据库的并发连接数,以避免系统资源过度消耗和性能下降。

可以根据系统的硬件配置和负载情况,适当调整该参数的值。

4. gp_workfile_limit该参数用于设置Greenplum数据库中工作文件的最大限制。

工作文件是在查询执行过程中临时存储中间结果的文件。

通过设置该参数,可以限制工作文件的大小,以避免磁盘空间的过度消耗和查询的性能下降。

可以根据系统的磁盘容量和查询的需求,调整该参数的值。

5. gp_autostats_mode该参数用于控制Greenplum数据库中自动统计信息的收集方式。

统计信息是用于优化查询计划的一种关键信息。

通过设置该参数,可以指定统计信息的收集方式,如自动收集、手动收集或禁止收集。

可以根据数据库的特点和查询的需求,选择合适的统计信息收集方式。

6. gp_enable_gpperfmon该参数用于启用或禁用Greenplum数据库中的性能监控功能。

greenplum where exists语句

greenplum where exists语句

greenplum where exists语句在Greenplum数据库中,WHERE EXISTS 语句用于检查子查询是否返回任何行。

如果子查询返回至少一行结果,则主查询中的条件被认为是满足的。

以下是一个示例,演示了在Greenplum数据库中使用WHERE EXISTS 的基本语法:SELECT column1, column2, ...FROM your_tableWHERE EXISTS (SELECT 1FROM another_tableWHERE condition);在这个例子中,your_table 是主查询中的表,another_table 是子查询中的表,condition 是用于指定匹配条件的表达式。

如果子查询返回任何行,主查询中的条件就被认为是满足的,从而选择相应的行。

请注意,关键是使用 SELECT 1,而不是 SELECT *,因为我们只关心是否存在结果,而不关心具体的列值。

这有助于提高性能,因为它减少了子查询返回的数据量。

以下是一个更具体的示例:SELECT employee_id, employee_nameFROM employeesWHERE EXISTS (SELECT 1FROM projectsWHERE projects.employee_id = employees.employee_id AND projects.status = 'In Progress');在这个例子中,主查询选择了员工表中的某些列,但只有当子查询中的项目表中存在与员工关联的项目,并且项目的状态为'In Progress' 时,才会选择该员工。

gp数据库函数

gp数据库函数

GP数据库函数概述GP数据库函数是指在GP(Greenplum)数据库中使用的函数。

GP数据库是一种分布式关系型数据库,可用于大数据量的数据存储和处理。

它的函数库提供了各种功能强大的函数,可以帮助用户进行数据处理、转换和分析等操作。

在本文中,我们将深入探讨GP数据库函数的各种功能和用法,包括函数的分类、常用函数示例和函数的编写等方面。

GP数据库函数的分类GP数据库函数可以分为以下几类:1. 数学函数数学函数主要用于数值运算和计算。

它们可以执行常见的数学运算,如加法、减法、乘法和除法,还可以进行高级数值计算,如三角函数、指数函数和对数函数等。

以下是一些常用的数学函数示例:•abs(): 返回一个数的绝对值。

•sqrt(): 返回一个数的平方根。

•sin(): 返回一个角的正弦值。

2. 字符串函数字符串函数用于处理和操作字符串。

它们可以执行字符串的连接、截取、替换和格式化等操作。

以下是一些常用的字符串函数示例:•concat(): 将两个或多个字符串连接起来。

•substring(): 返回一个字符串的子串。

•replace(): 替换一个字符串中的指定内容。

3. 日期和时间函数日期和时间函数用于处理日期、时间和时间间隔。

它们可以执行日期的加减运算、格式化和比较等操作。

以下是一些常用的日期和时间函数示例:•current_date(): 返回当前日期。

•date_part(): 返回日期的指定部分,如年、月、日等。

•interval(): 创建一个时间间隔。

4. 聚合函数聚合函数用于计算数据的汇总值,如平均值、总和、最大值和最小值等。

它们通常用于与GROUP BY语句一起使用,对数据进行分组并计算每个分组的汇总值。

以下是一些常用的聚合函数示例:•avg(): 计算一组数的平均值。

•sum(): 计算一组数的总和。

•max(): 返回一组数中的最大值。

5. 窗口函数窗口函数用于在查询结果的窗口内执行计算。

greenplum regexp_replace用法

greenplum regexp_replace用法

Greenplum 数据库的`regexp_replace` 函数是一个非常有用的工具,用于在字符串中执行正则表达式匹配,并将匹配的结果替换为新的字符串。

这个函数在数据清洗和文本处理中特别有用。

`regexp_replace` 函数的语法如下:```sqlregexp_replace(string, pattern, replacement [, flags])```* `string`:要进行处理的字符串。

* `pattern`:正则表达式模式,用于匹配要替换的字符串部分。

* `replacement`:替换匹配部分的字符串。

* `flags`(可选):控制匹配行为的标志。

可用的标志包括:+ `i`:执行不区分大小写的匹配。

+ `c`:执行区分大小写的匹配。

+ `n`:点号(.)不匹配换行符。

+ `m`:执行多行模式匹配。

+ `x`:启用扩展模式,忽略正则表达式中的空白字符。

这里有一些使用`regexp_replace` 的例子:1. 将字符串中的所有"apple" 替换为"orange":```sqlSELECT regexp_replace('I like apple pie.', 'apple', 'orange');```输出结果为'I like orange pie.'2. 使用不区分大小写的替换:```sqlSELECT regexp_replace('I LIKE APPLES AND BANANAS.', 'apple','orange', 'i');```输出结果为'I LIKE ORANGES AND BANANAS.'3. 使用多行模式替换:```sqlSELECT regexp_replace('apple\nbanana\neggplant', 'a', 'o', 'm');```输出结果为'ooloo\nbonono\neggplot',注意"banana" 的第一个字母没有改变。

greenplum数据库建表及分区

greenplum数据库建表及分区
请求出错错误代码400请尝试刷新页面重试
greenplum数 据 库 建 表 及 分 区
greenplum 创建分区表
CREATE TABLE fi_middle.order_detail (
date_id integer, order_id character varying(22), product_id character varying(50), order_quantity numeric, allot_quantity numeric, original_price numeric, sale_price numeric, vip_price numeric, bargin_price numeric, medium numeric, promotion_id numeric, is_vip_discount numeric, product_type numeric, reduce_price numeric, etl_change_date timestamp without time zone, order_items_id numeric, gift_card_charge numeric(12,2), gift_unit_price numeric, item_id numeric, parent_item_id numeric, allot_activity_fee numeric(12,2), allot_point_deduction_amount numeric, send_date timestamp without time zone, privilege_code_discount_amount numeric, relation_type numeric, parent_id character varying(16), shop_id numeric, shop_type numeric ) WITH ( OIDS=FALSE ) DISTRIBUTED BY (order_id) PARTITION BY RANGE(send_date) ( PARTITION p_order_detail_20170701 START ('2017-06-01 00:00:00'::timestamp without time zone) END ('2017-0701 00:00:00'::timestamp without time zone), PARTITION p_order_detail_20170801 START ('2017-07-01 00:00:00'::timestamp without time zone) END ('2017-0801 00:00:00'::timestamp without time zone) )

greenplumn数据库查询语句示例

greenplumn数据库查询语句示例

一、介绍Greenplumn是一个并行化的关系数据库管理系统,它是PostgreSQL的一个扩展,可以用于处理大规模数据。

在Greenplumn数据库中,我们可以通过SQL语句来进行数据查询和操作。

下面将通过示例介绍一些常用的Greenplumn数据库查询语句。

二、SELECT语句示例1. 查询所有数据```sqlSELECT * FROM table_name;```以上语句将返回table_name表中的所有数据。

2. 查询指定字段数据```sqlSELECT column1, column2 FROM table_name;```以上语句将返回table_name表中的column1和column2字段的数据。

3. 查询并排序```sqlSELECT * FROM table_name ORDER BY column_name DESC; ```以上语句将返回table_name表中的所有数据,并按照column_name字段降序排序。

4. 查询并限制结果集```sqlSELECT * FROM table_name LIMIT 10;```以上语句将返回table_name表中的前10条数据。

5. 使用聚合函数```sqlSELECT COUNT(column_name) FROM table_name;```以上语句将返回table_name表中column_name字段的数量。

三、INSERT语句示例1. 插入单行数据```sqlINSERT INTO table_name (column1, column2) VALUES (value1,value2);```以上语句将在table_name表中插入一行数据,值为value1和value2。

2. 插入多行数据```sqlINSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), (value5, value6);```以上语句将在table_name表中插入多行数据。

Greenplum常用命令、函数

Greenplum常用命令、函数

Greenplum常⽤命令、函数Greenplum常⽤查询命令#查看test_bd事务(即数据库)下的所有表名包含 user 的表信息SELECT UPPER(A.SCHEMANAME) AS SCHEMANAME, UPPER(A.TABLENAME) AS TABLENAME,D.ATTRELID,D.ATTRELID :: regclass,UPPER(D.ATTNAME) AS ATTNAME,REPLACE(REPLACE(REPLACE(FORMAT_TYPE(D.ATTTYPID, D.ATTTYPMOD),'numeric','NUMBER'),'character varying','VARCHAR2'),'date','DATE') AS DATA_TYPE,E.DESCRIPTIONFROM PG_TABLES AS AINNER JOIN PG_CLASS AS B ON A.TABLENAME = B.RELNAMELEFT JOIN PG_CATALOG.PG_DESCRIPTION AS E ON B.OID = E.OBJOIDLEFT JOIN PG_CATALOG.PG_ATTRIBUTE AS D ON D.ATTRELID = E.OBJOID AND D.ATTNUM = E.OBJSUBIDWHERE SCHEMANAME ='test_bd'AND A.TABLENAME LIKE'%user%'AND D.ATTNUM >0ORDER BY A .TABLENAME,D.ATTNUM select pg_size_pretty(pg_database_size('gp_db')); #查看gp数据库⼤⼩ select gp_segment_id,count(*) from db_name.tb_name group by gp_segment_id; #查看数据分布情况1.创建数据库 createdb test_db;2.删除数据库 dropdb test_db;3.创建模式 create schema myschema;4.删除模式 drop schema myschema;5.创建⽤户 create user user_name with password '123456' ;6.删除⽤户 drop user user_name;7.查看系统⽤户信息 select usename from pg_user;8.查看版本信息 select version();9.打开psql交互⼯具 psql name_db;10.执⾏sql⽂件 mydb=> \i basics.sql \i 命令从指定的⽂件中读取命令。

gp简易维护

gp简易维护

Greenplum 日常简明维护手册1. 数据库启动:gpstart 提示选择Y…常用参数: -a : 直接启动,不提示终端用户输入确认-q : 不希望屏幕输出-m:只启动master 实例,主要在故障处理时使用-R:只启动数据库在受限模式,禁止非超级用户登陆.-y:启动数据,但不启动standby启动完毕可使用gpstate查看数据库状态2. 数据库停止:gpstop 提示选择Y…常用参数:-a:直接停止,不提示终端用户输入确认-m:只停止master 实例,与gpstart –m 对应使用-f(-m faster):停止数据库,中断所有数据库连接,回滚正在运行的事务-u:不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用。

关闭完毕后可使用gpssh控制所有服务器查看postgres进程是否已经都不存在,下面命令显示为1则表明数据库所有进程已经关闭完毕.gpadmin@dsszbyz-dw6-mst01:~> gpssh -f host_all=> ps -ef|grep postgres |wc -l[ sdw1] 1[sdw2] 1[ mdw] 1[ sdw3] 1[ smdw] 1[ sdw4] 1[ ftp1] 1=>exit3. 登陆数据库:psql登录数据库方式:psql –d 数据库名–u 用户名可以先使用psql -d template1登陆默认实例,然后使用select * from pg_database;查看已经安装的数据库名,然后登陆相应数据库。

退出psql 使用\q.使用应用模式访问单个数据实例():PGOPTIONS='-c gp_session_role=utility' psql template1 -p 54324. 查看实例配置和状态:gpstate常用参数:-c:显示primary instance和mirror instance的对应关系-m:显示mirror的状态-f:显示standby的状态(是否配置,是否同步)-e:显示错误节点的详细信息。

Greenplum数据库通过sql查询表结构,拼装建表语句

Greenplum数据库通过sql查询表结构,拼装建表语句

Greenplum数据库通过sql查询表结构,拼装建表语句Greenplum数据库通过sql查询表结构,拼装建表语句在greenplum中pg_catalog是存储数据库基本元数据的表,information_schema ⾥包含了⼤量的视图,实现了类似mysql中information_schema ⽐较易读的数据库元数据管理的功能。

greenplum 的pg_catalog 库包含的数据表基本都⽤oid关联,其中oid是全局id,最⼤42亿,可重置,也可循环使⽤。

1,查询表结构selectattname, -- 字段名typname,-- 类型CASE WHEN pg_truetypmod =-1/* default typmod */THEN nullWHEN pg_truetypid IN (1042, 1043) /* char, varchar */THEN pg_truetypmod -4WHEN pg_truetypid IN (1560, 1562) /* bit, varbit */THEN pg_truetypmodELSE null end type_max_length, -- 获取变长类型最⼤长度is_null, -- 是否空default_data, -- 默认值isunique, -- 是否唯⼀索引isprimary, -- 是否主键is_index, --是否索引distribution, -- 是否分布键description -- 注释from(SELECTt1.attname,t2.typname,case when t1.attnotnull=true then'Y'else''end is_null ,t3.description,t4.adbin as default_data, -- 默认值case when t5.attrnums is not null then'Y'else null end distribution, -- 分布键t6.indisunique isunique,t6.indisprimary isprimary,case when t6.indkey is not null then'Y'else null end is_index,t1.attnum, -- 字段位置顺序CASE WHEN t2.typtype ='d'THEN t2.typbasetype ELSE t1.atttypid END pg_truetypid,CASE WHEN t2.typtype ='d'THEN t2.typtypmod ELSE t1.atttypmod END pg_truetypmodFROMpg_attribute t1 -- 属性left join pg_type t2 on t1.atttypid = t2.oid -- 类型left join "pg_catalog"."pg_description" t3 on t1.attrelid=t3.objoid and t3.objsubid = t1.attnum -- 注释left join pg_attrdef t4 on t4.adrelid = t1.attrelid AND t4.adnum = t1.attnum -- 默认值left join gp_distribution_policy t5 on t5.localoid = t1.attrelid and t1.attnum =any(t5.attrnums) -- 分布键left join pg_index t6 on t6.indrelid=t1.attrelid and t1.attnum =any(t6.indkey) -- 索引,主键等WHEREt1.attnum >0AND t1.attisdropped <>'t'and t1.attrelid='table_schema.table_name'::regclass) ttorder by attnum;2,简洁版SELECTt1.attname,t2.typname,format_type (t1.atttypid, t1.atttypmod) AS TYPE,case when t1.attnotnull=true then'is not null 'else null end is_null ,col_description (t1.attrelid, t1.attnum) AS comment,t4.adbin as default_attr, -- 默认值case when t5.attrnums is not null then'Y'else null end distribution,end is_index,t1.attnum -- 字段位置顺序FROMpg_attribute t1 -- 属性left join pg_type t2 on t1.atttypid = t2.oid -- 类型left join pg_attrdef t4 on t4.adrelid = t1.attrelid AND t4.adnum = t1.attnum -- 默认值left join gp_distribution_policy t5 on t5.localoid = t1.attrelid and t1.attnum =any(t5.attrnums)left join pg_index t6 on t6.indrelid=t1.attrelid and t1.attnum =any(t6.indkey)WHEREt1.attnum >0AND t1.attisdropped <>'t'and t1.attrelid='resumes.base_common'::regclassorder by attnum;。

GreenPlum-数据存储目录迁移及常用操作

GreenPlum-数据存储目录迁移及常用操作

GreenPlum-数据存储⽬录迁移及常⽤操作⼀、环境介绍Greenplum5 3节点集群,Centos7.2虚拟机,⼆、需求因为/home⽬录磁盘空间已满,需要将Greenplum的数据存储⽬录转移到新的分区/opt⽬录下,虚拟机磁盘管理没有⽤LVM逻辑卷管理,⽆法动态扩容/home。

三、解决⽅案⼀般Greenplum不⽀持移动它的⽬录,但是可以通过以下两种⽅案实现Greenplum的数据存储⽬录的更改:1.移动⽬录并在其旧位置创建符号链接到新位置。

例如:#如果以前使⽤"/home/data/master"⽬录,需要移动到"/opt/data2/master",移动前备份mv /home/data/master /opt/data2/master#则可以⽤符号链接"/data/master - >/data2/master",创建软链接ln -s /opt/data2/master /home/data/master#这⾥讲解下软硬连接的区别:ln -s and ln硬连接(ln):⽂件名就相当于⼀个硬连接(指针),当为⼀个⽂件再建⽴⼀个硬连接后相当于⼜增加了⼀个指向⽂件存储地的指针,当原⽂件名⽂件删除后,新建硬连接依旧可以访问数据。

软连接(ln -s):当原⽂件名⽂件被删除后,软连接失效。

软硬连接都不会增加存储⼤⼩,这⾥使⽤软连接是因为硬连接⽆法跨分区建⽴。

2.如果为测试系统,不考虑数据。

使⽤“gpdeletesystem”删除旧系统并在新⽬录中重新初始化它四、常⽤操作重置环境:解决不能解决的⼀系列问题1.删除主节点中gpdata下的master与⽂件存储⽬录,副节点也同样删除⽂件存储⽬录。

2.切换gpadmin⽤户,配置.bash_profile环境,例如:source /opt/greenplum/greenplum-db/greenplum_path.shexport MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1export PGPORT=5432export PGDATABASE=postgres #默认进⼊的dbsource .bash_profile3.查看初始化init脚本是否正确4.初始化数据库,node4为master的备份节点,这⾥若不成功则配置有错。

gp导出表结构

gp导出表结构

gp导出表结构
在GP(Greenplum)数据库中,您可以使用以下命令导出表结构:
1. 如果您只需要导出单个表的结构,可以使用以下命令:
sql
pg_dump -t tablename -s databasename > structure.sql 其中,`tablename`是要导出结构的表名,`databasename`是包含该表的数据库名。

这将把表结构以SQL语句的形式保存到名为`structure.sql`的文件中。

2. 如果您需要导出整个数据库的所有表结构,可以使用以下命令:
sql
pg_dump -s databasename > structure.sql
这将把整个数据库的所有表结构以SQL语句的形式保存到`structure.sql`文件中。

请确保在执行上述命令之前,您具有适当的权限以及足够的磁盘空间来保存导出的结构文件。

greenplum 语法

greenplum 语法

greenplum 语法Greenplum是一种基于PostgreSQL的高性能、可扩展的关系型数据库管理系统。

它以并行处理和分布式架构为基础,支持大规模数据存储和查询,适用于数据仓库和商业智能应用。

下面介绍一些 Greenplum 常用的 SQL 语法:1. 创建数据库:CREATE DATABASE database_name;2. 创建表:CREATE TABLE table_name (column1 datatype,column2 datatype,column3 datatype,.....);3. 插入数据:INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...);4. 查询数据:SELECT column1, column2,..... FROM table_name WHERE condition;5. 更新数据:UPDATE table_name SET column1 = value1, column2 =value2,.... WHERE condition;6. 删除数据:DELETE FROM table_name WHERE condition;7. 创建索引:CREATE INDEX index_name ON table_name (column1,column2,....);8. 删除索引:DROP INDEX index_name;9. 创建视图:CREATE VIEW view_name AS SELECT column1, column2,.... FROM table_name WHERE condition;10. 删除视图:DROP VIEW view_name;11. 创建函数:CREATE FUNCTION function_name (argument_type,argument_type,....) RETURNS return_type AS $$function_body;$$ LANGUAGE plpgsql;12. 删除函数:DROP FUNCTION function_name (argument_type,argument_type,....);以上是 Greenplum 常用的 SQL 语法,通过学习这些语法可以更加熟练地操作数据库。

greenplum minus 语句

greenplum minus 语句

greenplum minus 语句MINUS是SQL 查询语言中的一种集合运算符,用于从一个查询结果中减去另一个查询结果。

在Greenplum 数据库中,MINUS不是标准SQL 的一部分,而是由一些数据库系统提供的扩展。

Greenplum 使用EXCEPT关键字来实现与MINUS类似的功能。

下面是一个关于Greenplum 数据库中EXCEPT的详细解释:1. EXCEPT 语法EXCEPT用于返回两个查询的不同之处,即从第一个查询结果中减去与第二个查询结果相同的部分。

sql-- 语法SELECT column1, column2, ...FROM table1EXCEPTSELECT column1, column2, ...FROM table2;•column1, column2, ...: 要查询的列。

•table1: 第一个查询的表。

•table2: 第二个查询的表。

2. 示例假设有两个表,分别是employees1和employees2,它们包含相同的列(例如,employee_id、first_name、last_name)。

我们想要找到只在employees1中出现而不在employees2中出现的员工。

sql-- 查找只在employees1 中出现而不在employees2 中出现的员工SELECT employee_id, first_name, last_nameFROM employees1EXCEPTSELECT employee_id, first_name, last_nameFROM employees2;这个查询返回的结果将包含只在employees1中存在而在employees2中不存在的员工记录。

3. 注意事项•查询的列数和数据类型必须相同。

•EXCEPT默认会删除重复的行,如果需要包含重复的行,可以使用ALL修饰符,即EXCEPT ALL。

•查询结果的列名是由第一个查询的列名决定的,可以使用列别名来修改。

greenplum基本操作及管理命令

greenplum基本操作及管理命令

greenplum基本操作及管理命令第1章系统管理 1.1 GP服务启停 su - gpadmingpstart #正常启动gpstop #正常关闭gpstop -M fast #快速关闭gpstop –r #重启gpstop –u #重新加载配置文件 1.2 登陆 psql gpdbpsql -d gpdb -h gphostm -p 5432 -U gpadmin 1.3 查看segment配置 select * from gp_segment_configuration; 1.4 文件系统 select * from pg_filespace_entry; 1.5 列出所有数据库 psql –l 1.6 行表库最大尺寸一个数据库最大尺寸无限制已存在有32TB 的数据库一个表的最大尺寸 32 TB一行记录的最大尺寸 1.6 TB一个字段的最大尺寸? 1 GB一个表里最大行数无限制一个表里最大列数 250-1600 与列类型有关一个表里的最大索引数量无限制当然实际上没有真正的无限制还是要受可用磁盘空间、可用内存/交换区的制约。

事实上当这些数值变得异常地大时系统性能也会受很大影响。

表的最大尺寸32 TB 不需要操作系统对大文件的支持。

大表用多个 1 GB 的文件存储因此文件系统尺寸的限制是不重要的。

如果缺省的块大小增长到32K 最大的表尺寸和最大列数还可以增加到四倍 1.7 存储空间一个 Postgres 数据库存储一个文本文件所占用的空间最多可能需要相当于这个文本文件自身大小5倍的磁盘空间。

第2章 Psql操作 2.1 创建/删除用户创建用户createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名参数说明[-a]允许创建其他用户相当于创建一个超级用户[-A]不允许此用户创建其他用户[-d]允许此用户创建数据库[-D]不允许此用户创建数据库[-e]将执行过程显示到Shell上[-P]创建用户时同时设置密码[-h 主机名]为某个主机上的Postgres创建用户[-p port]与-h参数一同使用指定主机的端口。

greenplum 语法

greenplum 语法

greenplum 语法Greenplum是一个分布式数据库管理系统,它支持SQL语言进行数据的查询、插入、更新和删除等操作。

本文将介绍Greenplum的基本语法和常用操作。

一、基本语法1. 创建数据库CREATE DATABASE dbname;2. 删除数据库DROP DATABASE dbname;3. 连接数据库c dbname;4. 创建表格CREATE TABLE tablename (column1 datatype,column2 datatype,column3 datatype,.....);5. 删除表格DROP TABLE tablename;6. 插入数据INSERT INTO tablename (column1, column2, column3, ....)VALUES (value1, value2, value3, .....);7. 查询数据SELECT column1, column2, ....FROM tablenameWHERE condition;8. 更新数据UPDATE tablenameSET column1 = value1, column2 = value2, ....WHERE condition;9. 删除数据DELETE FROM tablenameWHERE condition;二、常用操作1. 聚合函数聚合函数用于对数据进行计算,包括SUM、AVG、COUNT、MAX和MIN等。

SELECT SUM(column) FROM tablename;2. 排序排序用于对数据进行排序,包括ASC(升序)和DESC(降序)。

SELECT column1, column2, ....FROM tablenameORDER BY column1 ASC;3. 分组分组用于将数据按照某个字段进行分组,可以配合聚合函数进行计算。

SELECT column1, SUM(column2)FROM tablenameGROUP BY column1;4. 联结联结用于将两个或多个表格中的数据进行联合。

GreenPlumpostgrescopy命令导出导入数据

GreenPlumpostgrescopy命令导出导入数据

GreenPlumpostgrescopy命令导出导⼊数据⼀、COPY命令简单实⽤1、copy在postgres与GreenPlum介绍1.1 postgrespostgres的COPY命令可以快速的导出/导⼊数据到postgresql数据库中,⽀持常⽤的⽂件格式,如:txt、sql、csv、压缩⽂件、⼆进制格式等。

特别适合批量导出和导⼊数据,速度⽐较快。

COPY TO把⼀个表的所有内容都拷贝到⼀个⽂件;COPY FROM从⼀个⽂件⾥拷贝数据到⼀个表⾥(把数据附加到表中已经存在的内容⾥)。

注意:COPY只能⽤于表,不能⽤于视图。

1.2 GreenPlum对于数据的加载,GreenPlum数据库也提供了copy⼯具(源于PostgreSQL数据库),使⽤⽅法同postgres数据库的copy命令。

copy命令⽀持⽂件与表之间的数据的导⼊和导出。

注意:使⽤copy命令进⾏数据导⼊时,数据需要经过Master节点分发到Segment节点;同样使⽤copy命令进⾏数据卸载,数据也需要由Segment发送到Master节点,由Master节点汇总后再写⼊外部⽂件。

这样就限制了数据加载与卸载的效率,但是数据量较⼩的情况下,copy命令就⾮常⽅便。

当数据量⽐较⼤时可以考虑使⽤GreenPlum的gpload⼯具来导⼊。

2. 使⽤copy命令导出/导⼊数据的步骤COPY aa_test FROM '/tmp/data/test.csv' csv HEADER NULL '';通常使⽤psql⼯具来进⾏数据的导出和导⼊。

2.1 准备⼯作(1) 创建⽤于存放导出⽂件(或待导⼊⽂件)的⽬录,并赋予权限;注意:使⽤root⽤户# 创建⽬录[root@node8 /]# mkdir /tmp/data# 赋予权限[root@node8 /]# chmod 777 /tmp/data/12345(2) 进⼊psql并切换数据库注意:如果是postgres数据库,则切换到postgres⽤户;如果是GreenPlum的MPP,则切换到gpadmin⽤户;# 由于我使⽤的是GreenPlum的MPP,所以切换gpadmin⽤户# ---------------------------------------------------------[root@node8 ~]# su - gpadmin# 进⼊psql[gpadmin@node8 ~]$ psql# 使⽤`\c`命令切换数据库,切换到要导出或导⼊数据的数据库# ---------------------------------------------------------postgres=# \c resdataYou are now connected to database "resdata" as user "gpadmin".12345678910113. 开始使⽤copy命令导出或导⼊数据# 使⽤ copy 命令将 resdata 库下的 aa_test 表中的数据导出到 /tmp/data/test.csv ⽂件中# ---------------------------------------------------------resdata=# COPY aa_test TO '/tmp/data/test.csv' WITH csv;COPY 2# 使⽤ copy 命令将 /tmp/data/test.csv ⽂件中内容导⼊到 resdata 库下的 aa_test 表中# ---------------------------------------------------------resdata=# COPY aa_test FROM '/tmp/data/test.csv' WITH csv;COPY 2123456789COPY TO还能拷贝SELECT查询的结果。

greenplum 语法

greenplum 语法

greenplum 语法Greenplum是一种开源分布式关系数据库管理系统,它延续了关系数据库的传统,同时兼顾海量数据处理和并行计算的性能优势。

以下是一些Greenplum语法的中文介绍:1. 创建表在Greenplum中,可以使用CREATE TABLE语句创建新表。

例如:CREATE TABLE mytable (id INTEGER,name VARCHAR(50),age INTEGER);2. 插入数据使用INSERT语句可以将数据插入到表中。

例如:INSERT INTO mytable(id, name, age)VALUES(1, '张三', 30),(2, '李四', 25),(3, '王五', 40);3. 查询数据可以使用SELECT语句查询表中的数据。

例如:SELECT * FROM mytable;4. 更新数据使用UPDATE语句可以更新表中的数据。

例如:UPDATE mytableSET age = 35WHERE name = '张三';5. 删除数据使用DELETE语句可以删除表中的数据。

例如:DELETE FROM mytableWHERE age > 30;6. 创建索引使用CREATE INDEX语句创建索引,可以加快数据的检索速度。

例如:CREATE INDEX idx_name ON mytable(name);7. 连接表可以使用JOIN语句来连接多个表。

例如:SELECT *FROM mytableINNER JOIN yourtable ON mytable.id = yourtable.id;以上是Greenplum的一些基本语法,使用这些语法可以对数据库进行各种操作。

gp创建分区表语句命令

gp创建分区表语句命令

在Greenplum数据库(GPDB)中,创建分区表是用于优化大数据存储和查询性能的一种策略。

分区表将大表按照某个字段的值范围或列表进行划分,每个分区对应一部分数据,可以独立管理和维护。

以下是一个在Greenplum中创建水平分区表的示例,并对其进行详细分析:sql‐‐ 创建一个基于时间范围分区的垂直分表(按月分区)CREATE TABLE sales_data_yyyymm (sale_id INT,product VARCHAR(100),quantity INT,sale_date DATE) DISTRIBUTED BY (sale_id)PARTITION BY RANGE (date_part('year', sale_date) * 100 + date_p art('month', sale_date))(START (date '2023‐01‐01') INCLUSIVEEND (date '2024‐01‐01') EXCLUSIVEEVERY (INTERVAL '1 month'));‐‐ 上述语句分解说明:‐‐ 1. `CREATE TABLE sales_data_yyyymm`:定义一个新的表名。

‐‐ 2. `(sale_id INT, product VARCHAR(100), quantity INT, sale_d ate DATE)`:列出表的列定义。

‐‐ 3. `DISTRIBUTED BY (sale_id)`:指定分布键,Greenplum会根据这个字段的值将数据均匀分布到各个段(segment)上。

‐‐ 4. `PARTITION BY RANGE (...)`:表示按范围分区,这里使用的是`sal e_date`字段的年月部分作为分区依据。

‐‐ 5. `START (date '2023‐01‐01') INCLUSIVE`:定义分区开始日期,包含此日期的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Greenplum 日常简明维护手册1.数据库启动:gpstart常用参数:-a : 直接启动,不提示终端用户输入确认-m:只启动master 实例,主要在故障处理时使用访问单个数据实例:PGOPTIONS='-c gp_session_role=utility' psql template1 -p 5432启动某个segment instance :pg_ctl stop/start -D /datadir/取端口号:select * from gp_segment_configuration启动以后会在/tmp/ 下生成一个.lock 隐藏文件,记录主进程号。

2.数据库停止:gpstop:常用可选参数:-a:直接停止,不提示终端用户输入确认-m:只停止master 实例,与gpstart –m 对应使用-f:停止数据库,中断所有数据库连接,回滚正在运行的事务-u:不停止数据库,只加载pg_hba.conf 和postgresql.conf中运行时参数,当改动参数配置时候使用。

连接数,重启3.查看实例配置和状态select * from gp_segment_configuration order by content ;select * from pg_filespace_entry ;主要字段说明:Content:该字段相等的两个实例,是一对P(primary instance)和M(mirror Instance)Isprimary:实例是否作为primary instance 运行Valid:实例是否有效,如处于false 状态,则说明该实例已经down 掉。

Port:实例运行的端口Datadir:实例对应的数据目录4.gpstate :显示Greenplum数据库运行状态,详细配置等信息常用可选参数:-c:primary instance 和mirror instance 的对应关系-m:只列出mirror 实例的状态和配置信息-f:显示standby master 的详细信息该命令默认列出数据库运行状态汇总信息,常用于日常巡检。

5.查看用户会话和提交的查询等信息select * from pg_stat_activity 该表能查看到当前数据库连接的IP 地址,用户名,提交的查询等。

另外也可以在master 主机上查看进程,对每个客户端连接,master 都会创建一个进程。

ps -ef |grep -i postgres |grep -i con杀进程:Linux:kill -11 PIDSql :pg_cancel_backend(pid)ps –ef |grep – i postgre |grep –i con6.查看数据库、表占用空间查询表大小:select pg_size_pretty(pg_relation_size('schema.tablename'));例: select pg_size_pretty(pg_relation_size('iidp_code.cf_load_state'));表和索引select pg_size_pretty(pg_total_relation_size('iidp_code.cf_load_state '));查询数据库大小select pg_size_pretty(pg_database_size('databasename'));例:select pg_size_pretty(pg_database_size('BDDJ_S_T'));--单个库select datname,pg_size_pretty(pg_database_size(datname)) from pg_database; --所有库分区表:Select *from pg_partitions where …查某个schema 占用的空间:select pg_size_pretty(pg_relation_size(tablename)) from pg_tables t inner join pg_namespace d on t.schemaname=d.nspname group by d.nspname必须在数据库所对应的存储系统里,至少保留30%的自由空间,日常巡检,要检查存储空间的剩余容量。

7.收集统计信息,回收空间定期使用Vacuum analyze tablename 回收垃圾和收集统计信息,尤其在大数据量删除,导入以后,非常重要将delete 或update 的“旧”数据放到Rollback Segment,与表分开存放。

并发事务为了保证数据一致性,需要从Rollback Segment 上恢复数据。

Greenplum:“旧数据”与表存放在一起,对旧的数据做了标志。

并发事务通过transaction ID(XID)判断数据是否可用系统表也是需要进行vacuum:#!/bin/bashDBNAME="databasename"VCOMMAND="VACUUM ANALYZE"#VCOMMAND="VACUUM FULL ANALYZE"psql -tc "select '$VCOMMAND' || ' pg_catalog.' || relname || ';' from pg_classa,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' anda.relkind='r'" $DBNAME | psql -a $DBNAME长期没有vaccum 的大表,使用重建表/drop 表的方式,消除垃圾空间。

Alter table xxx rename to yyyy.8.查看数据分布情况两种方式:Select gp_segment_id,count(*) from tablename group by 1 ;如数据分布不均匀,将发挥不了并行计算的优势,严重影响性能。

查看磁盘分布select dfhostname, dfspace,dfdevice from gp_toolkit.gp_disk_free order by dfhostname 9.实例恢复:gprecoverseg通过gpstate 或gp_segment_configuration 发现有实例down 掉以后,使用该命令进行回复,恢复时候不需要停机,不影响应用10.查看锁信息:SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid,l.mode, l.granted, a.current_queryFROM pg_locks l, pg_class c, pg_stat_activity aWHERE l.relation=c.oid AND l.pid=a.procpidORDER BY c.relname;主要字段说明:relname: 表名locktype、mode 标识了锁的类型MVCC: 读写相互不影响select / insert update delete避免死锁:delete 和update 是表级排他EXCLUSIVE锁。

11.数据库备份gp_dump, pg_dump常用参数:-s: 只导出对象定义(表结构,函数等)-n: 只导出某个schemagp_dump 默认在master 的data 目录上产生这些文件:gp_catalog_1_<dbid>_<timestamp> :关于数据库系统配置的备份文件gp_cdatabase_1_<dbid>_<timestamp>:数据库创建语句的备份文件gp_dump_1_<dbid>_<timestamp>:数据库对象ddl语句gp_dump_status_1_<dbid>_<timestamp>:备份操作的日志在每个segment instance 上的data目录上产生的文件:gp_dump_0_<dbid>_<timestamp>:用户数据备份文件gp_dump_status_0_<dbid>_<timestamp>:备份日志12.数据库恢复gp_restore pg_restore必选参数:--gp-k=key :key 为gp_dump 导出来的文件的后缀时间戳-d dbname :将备份文件恢复到dbname13.Master主机硬件故障时,如何切换至Stand by Master,切换成功后是否需要进行数据检查或恢复等HA答:在stand by master 主机上,运行gpactivatestandby -d /gpdata 进行切换。

由于Master 只存储系统元数据信息,切换成功后,一般不需要进行数据检查和恢复。

日常巡检中要检查Stand by master 是否同步,可以通过表gp_master_mirroring 确认,如果发现不同步,可以通过命令:gpinitstandby -sstandby_master_hostname –n 使得master和standby 重新同步。

14.当Master主机硬件故障排除时,如何由Stand by切换至原Master主机。

答:1,在standby master运行:gpinitstandby –s original_master_hostname2,在standby master 上运行:gpstop –m,注意这里只停止master 实例3,在原来的maste上运行:gpactivatestandby -d /gpdata。

4,在原来的master上运行:gpinitstandby -s original_standby_master_hostname15.日志:master 和segment 上分别有日志:$DATADIR/pg_log/*.csv$DATADIR:select * from pg_filespace_entry ;使用外部表将日志导入数据库,进行分析。

使用xfs 文件系统。

相关文档
最新文档