vertica基本操作.docx

上传人:b****0 文档编号:254758 上传时间:2022-10-07 格式:DOCX 页数:8 大小:63.04KB
下载 相关 举报
vertica基本操作.docx_第1页
第1页 / 共8页
vertica基本操作.docx_第2页
第2页 / 共8页
vertica基本操作.docx_第3页
第3页 / 共8页
vertica基本操作.docx_第4页
第4页 / 共8页
vertica基本操作.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

vertica基本操作.docx

《vertica基本操作.docx》由会员分享,可在线阅读,更多相关《vertica基本操作.docx(8页珍藏版)》请在冰豆网上搜索。

vertica基本操作.docx

vertica基本操作

1.schema

1.如何查看schema?

在vsql里面,直接用\dn可以查看:

dbadmin=>\dn

Listofschemas

Name|Owner|Comment

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

v_internal|dbadmin|

v_catalog|dbadmin|

v_monitor|dbadmin|

public|dbadmin|

v_txtindex|dbadmin|

v_idol|dbadmin|

ylods|dbadmin|

yledw|dbadmin|

yldm|dbadmin|

(9rows)

在DBVis里面,在左侧界面就可以看到。

执行select语句:

select*fromschemata;

2.查询用户和schema的信息:

SELECTu.user_name,s.schema_name

FROMusersu

LEFTOUTERJOINschematas

ONu.user_name=s.schema_owner;

3.创建schema,将schema授权给用户。

createschemaxmm;

grantallonschemaxmmtoxmm;

4.如何查看用户对哪些schema具有操作权限?

查询v_catalog架构下的grants表,可以看到授权情况:

通过grantallonschemaxmmtoxmm;语句授权,只能授予usage权限和create权限。

如果需要增加其他增删改查等(INSERT*,SELECT*,UPDATE*,DELETE*,REFERENCES*,USAGE*,CREATE*,TRUNCATE*)权限,还需要单独授权:

grantinsertonschemaxmmtoxmm;

5.不同的对象拥有的权限。

权限如下:

对象

权限

说明

schema

USAGE,CREATE

schema

INSERT*,SELECT*,UPDATE*,DELETE*,REFERENCES*,USAGE*,CREATE*,TRUNCATE*

Procedure

EXECUTE、EXECUTE*

 

新创建的用户仅对PUBLIC拥有USAGE权限,数据库用户必须为新用户显式授予CREATE权限,并为他们授予各个对象权限,以便新用户可以在public架构中创建或者查找对象。

6.不同的对象操作需要的权限要求

表相关的操作:

操作

必需权限

createtable

对于架构的create权限。

如果需要在createtable时需要引用序列,需要以下权限:

●对于序列架构的usage权限

●对于序列对象的select权限

droptable

对于包含表的架构或者架构所有者的usage权限

truncatetable

对于包含表的架构或者架构所有者的usage权限

altertableadd/drop/rename/alterclolumn

对于包含表的schema的usage权限

altertableadd/dropconstraint

对于包含表的schema的usage权限

altertablepartition(reorganize)

对于包含表的schema的usage权限

altertablerename

对于包含表的架构的usage和create权限

altertablesetschema

对于新schema的create权限;对于旧schema的usage权限

select

对于表的select权限和包含表的schema的usage权限

insert

对于表的insert权限和包含表的schema的usage权限

delete

对于表的delete权限和包含表的schema的usage权限

update

对于表的update权限和包含表的schema的usage权限

references

表中的references权限,可创建引用此表的外键约束。

需要对于包含被约束表和外键源的schema的usage权限。

analyze_statistics()

对于表的insert/update/delete权限;包含表的schema的usage权限

analyze_histogram()

对于表的insert/update/delete权限;包含表的schema的usage权限

drop_statistics()

对于表的insert/update/delete权限;包含表的schema的usage权限

drop_partition()

包含表的schema的usage权限

投射(projection):

这里的投射,其实是起到索引或者视图的作用。

操作

必需权限

createprojection

对于锚表的select权限;

对于包含锚表的schema的usage权限;

对于将包含投射的schema的create权限。

注意:

如果使用表隐式创建投射,则除了表创建权限以外,无需额外的权限。

alterprojectionrename

对于包含投射的架构的usage和create权限

dropprojection

对于包含投射的schema的usage权限

外部过程:

操作

必需权限

createprocedure

超级用户

dropprocedure

超级用户

execute

对于过程的execute权限;

对于包含该过程的schema的usage权限

序列:

操作

必需权限

createsequence

对于将包含序列的schema的create权限

createtablewithsequence

对于序列的select权限;

对于序列架构的usage权限

dropsequence

对于包含序列或序列所有者的架构的usage权限

altersequencerenameto

对于架构的usage和create权限

altersequencesetschema

对于当前包含序列的schema的usage权限;对于将要包含序列的新schema的create权限

currval()nextval()

对于序列的select权限;对于包含序列架构的usage权限

7.可以为表中的行或列创建访问策略。

有行访问策略和列访问策略。

列访问策略:

createaccesspolicyon架构名.表名forcolumn列名条件enable;

行访问策略:

createaccesspolicy架构名.表名forrowswhere条件enable;

创建列访问策略可以让不同的用户(角色)运行同一查询并收到不同的结果。

在访问策略中指定的条件决定用户是否能够看到策略所限制的数据。

具有dbadmin权限的用户,可以启用和禁用表中的单独访问策略。

注意点:

1.每个表只能有一个行访问策略。

如果以后需要添加更多策略,需要将策略放在单个where谓词中,并使用alteraccesspolicy启用新条件。

8.查看数据库角色。

select*fromroles;

2.表

1.v_catalog架构下的constraint_columns表,可以看到表列的限制条件,也包括非空(notnull)条件。

2.建表语句中,字段类型int可以正常使用,需要用到浮点数时,用numeric()。

createtablecustomer(

cust_idint,

cust_namevarchar(10),

gendervarchar(3)

segmentedbyhash(cust_id)

allnodesksafe;

在建表语句中,allnodes必须有,否则会报语法错误。

3.oracle里面的rownum在vertica中不能够使用,部分功能可以使用limit来替换。

select*fromtlimit6;

selectprojection_schemafromprojectionswhereprojection_schema='xmm'limit2;

4.子查询的写法:

Oracle里面该语句可以正常执行:

selectdistinctarea2code,area2name,dept1code,dept1name

fromYLDM.T_L1_DM_SUMDATAA

wherenotexists(select1

fromYLEDW.T_L1_EDW_REGIONMAPB

whereA.AREA2CODE=B.AREA2CODE

ANDA.DEPT1CODE=B.DEPTCODE

ANDYEAR>=2012)

但是在Vertica中执行会报错如下:

[Code:

2784,SQLState:

0A000][Vertica][VJDBC](2784)ERROR:

Correlatedsubquerycouldnotbeflattenedasajoin

解决:

将子查询中的ANDYEAR>=2012放到子查询外围即可正常执行:

selectdistinctarea2code,area2name,dept1code,dept1name

fromYLDM.T_L1_DM_SUMDATAA

wherenotexists(select1

fromYLEDW.T_L1_EDW_REGIONMAPB

whereA.AREA2CODE=B.AREA2CODE

ANDA.DEPT1CODE=B.DEPTCODE

ANDYEAR>=2012

3.projection

1.建表同时指定分布健,那么projection就会立即创建,分布健就是指定的字段,即使以后插入数据projection不变;建表的时候不指定分布键,那么会在插入第一条数据的时候创建projection,而且projection的分布健包含该表所有字段。

2.每个手工创建的projection会自动生成2个子projection。

3.如果某些字段是分布键字段(segmentby里面的字段),那么不能修改其数据类型。

建表时要是不指定分布键,那这个表的所有字段都不能修改,因为默认表会把所有字段作为分布键。

所以为了以后的修改和存储方便,最好是在建表时直接指定分布键。

 

4.其他操作

DBV里面中文字符乱码问题处理:

在SQLCommander中,sql语句中如果有中文,显示是‘口口口’。

解决办法如下:

在Tools->toolProperties->General->Appearance->Fonts->SQLEditor选择PMingLiU,同时把Grid也选择PMingLiU就可以了。

如上配置以后,中文就可以正常显示了。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1