`
evilgod
  • 浏览: 48535 次
社区版块
存档分类
最新评论

Vertica 常用命令

sql 
阅读更多
基于列存储的数据库,相对于传统的基于行的数据库,它更适合在数据仓库存储方面发挥特长。基于列存储的数据库的优点:
a)、对于聚集操作,比如求sum,明显基于列存储的要比基于行存储的快;
b)、对于update操作,不须接触其他列值;
c)、基于行存储的数据库在查询每行记录的多个列值更高效的条件是,row-size比较小,这样一次磁盘读取就可以获取整行;
d)、基于行存储的数据库在insert一行的时候相对更高效,毕竟可一次写入一个连续空间,即一次single disk seek。
从实际情况上来看,基于行存储的数据库更适合OLTP(联机事务处理系统),基于列存储的数据库更适合OLAP(联机分析处理系统),比如数据仓库。除此之外,同一列必定是同一类型大小,基于列存储的数据库更容易使用高效的存储方式,与之相对,基于行存储的数据库则只能采用随机方式处理列值了。


  Vertica数据库的设计特点是:
a)、它是基于列的存储结构,提高了连续的record处理的性能,但是在一般事务中增加了对单独record进行update和delete的开销;
b)、“单独”更新(out-of-place updates)和混合存储结构,提高了查询、插入的性能,但增加了update和delete的开销;
c)、压缩,减少存储开销和IO带宽开销;
d)、完全无共享架构,降低对共享资源的系统竞争。
Vertica数据库运行在基于Linux的网格服务器上,目前应用于Amazon Elastic Compute Cloud的数据库管理系统。


常用命令如下:


一、进入vertica的sql环境:vsql -d dbname -w passwd
    在vertica的sql环境下获取帮助 dbname=>\h


二、(1)查询用户:select * from v_catalog.users;
    (2)查询schema:select * from schemata;
     注:vertica中,某个schema必须附属于某个用户(user),查询用户和schema信息:
         SELECT u.user_name, s.schema_name
           FROM users u LEFT OUTER JOIN schemata s ON u.user_name = s.schema_owner


三、创建用户和schema:
    (1)创建一个用户:create user dev_test identified by 'test';
    (2)基于某个用户创建schema:create schema if not exists test authorization dev_test;
    (3)重命名(备份用)dataname数据库为 dataname_bak:alter schema dataname rename to dataname_bak;
    (4)删除dataname库:drop schema dataname cascade;   


三、赋权:
    (1)一个schema上的权限赋给另一个用户:GRANT USAGE ON SCHEMA dbname_dw TO dev_test;
    (2)把对某个表的操作的权限赋给另一个用户:GRANT ALL ON TABLE tw_re_pm_cell_all_cell_h to dev_test;
    (3)从某个用户收回对某个schema的使用权限:revoke all on SCHEMA dbname_dw from dev_test;
    (4)从某个用户收回对某个表的使用权限:revoke all on table fct_flux_se_flux_flow_whole_ana_d from dev_test;


三、序列:
    (1)查询系统中的序列:select * from sequences;
    (2)创建序列:
         简单语法:CREATE SEQUENCE sq1 MAXVALUE 5000 START 1;
         标准语法:CREATE SEQUENCE [[db-name.]schema.]sequence_name
                    ... [ INCREMENT [ BY ] positive_or_negative ]
                    ... [ MINVALUE minvalue | NO MINVALUE ]
                    ... [ MAXVALUE maxvalue | NO MAXVALUE ]
                    ... [ START [ WITH ] start ]
                    ... [ CACHE cache ]
                    ... [ CYCLE | NO CYCLE ]


    (3)1、使用序列:SELECT NEXTVAL('my_seq');
                   SELECT CURRVAL('my_seq');
            注:一个新创建还没有使用过的序列,必须首先执行NEXTVAL,然后才能执行CURRVAL。
         
         2、在INSERT语句里使用序列:INSERT INTO customer VALUES ('Hawkins' ,'John', 072753, NEXTVAL('my_seq'));
         3、在INSERT语句里把序列作为默认值:
            CREATE TABLE customer2(ID INTEGER DEFAULT NEXTVAL('my_seq'),
                                   lname VARCHAR(25),
                                   fname VARCHAR(25),
                                   membership_card INTEGER
                                  );
            => INSERT INTO customer2 VALUES (default,'Carr', 'Mary', 87432);


    (4)删除序列:DROP SEQUENCE seq_name;




四、Vertica创建外部表:
    CREATE EXTERNAL TABLE ext1 (x integer) AS COPY FROM '/tmp/ext1.dat' DELIMITER ',';
    CREATE EXTERNAL TABLE ext1 (x integer) AS COPY FROM '/tmp/ext1.dat.bz2' BZIP DELIMITER ',';
    CREATE EXTERNAL TABLE ext1 (x integer, y integer) AS COPY (x as '5', y) FROM '/tmp/ext1.dat.bz2' BZIP DELIMITER ',';




五、copy执行错误后的Vertica的错误日志:
    /database/dbname/dbname/v_dbname_node0002_catalog/CopyErrorLogs




六、从vertica数据的表中导出数据到数据文件,shell命令:
    echo `vsql -d dbname -U dbadmin -Atq -w Zongfen_12 -c "select * from test.dim_flow_direction order by flow_type_code"> /database/datastage/export/dim_all/test`




七、通过数据文件向vertica数据库里加载数据:
  copy test.fct_flux_se_bus_res_ana_d from '/database/imp_file/fct_flux_se_bus_res_ana_d' on v_dbname_node0002 delimiter '|';




八、(1)修改字段为非空
         alter table test.fct_fournet_wlanap_equp_ana_d alter column day_id set not null;
    (2)更改字段数据类型
         alter table test.dim_micro_area_gsm alter column cell_id set data type numeric(15,0);
        
         对于数值类型:types–INTEGER, INT, BIGINT, TINYINT, INT8, SMALLINT, and all NUMERIC values of scale <=18 and precision 0 之间是可以互相转化的。此外,numeric类型的精度(precision)是无法更改的,但是长度(scale)是可以修改的,(0-18)之间可以互修改,(19-37)之间可以互修改。




    (3)给表增加字段
         alter table test.DIM_DETAIL_SVCTYPE add column if_app numeric(10,0);
    (4)删除表字段
         alter table test.DIM_DETAIL_SVCTYPE drop column if_app;


九、数据库表之间导数据
    CONNECT TO VERTICA dbname USER dbadmin PASSWORD 'dbname' ON '192.168.1.1',5433;
    export TO VERTICA dbname.test.FCT_TNES_GN_NET_M FROM test.FCT_TNES_GN_NET_M;




九、修改普通表为分区表
alter table test.fct_fournet_wlanap_equp_ana_d partition by day_id;


十、修改表名
alter table test.fct_fournet_wlanap_equp_ana_d_x rename to fct_fournet_wlanap_equp_ana_d;


十一、修改表所属的用户
alter table test.fct_fournet_wlanap_equp_ana_d owner to dev_test


十二、查询表
tables


十三、projections
projections


十四、查询列
columns


十五、查询注释
comments


十六、
--查询表对应的projection
SELECT owner_name, anchor_table_name, projection_name
  FROM projections
WHERE projection_basename = 'DIM_CFG_LEVEL';




--查询表的列对应的注释
SELECT t3.anchor_table_name AS Table_name,
       SUBSTR (t1.object_name, INSTR (t1.object_name, '.', 1) + 1) AS Column_name,
       t1.comment AS comment
  FROM comments t1, projections t3
WHERE     SUBSTR (t1.object_name, 1, INSTR (t1.object_name, '.', 1) - 1) =
              t3.projection_name
       AND t1.object_type = 'COLUMN'
ORDER BY t3.anchor_table_name;




-- 四舍五入、并且保留两位小数
SELECT TRIM (TO_CHAR (ROUND (3.456, 2.0), '999999999999999999.00')),
       TRIM (TO_CHAR (ROUND (3, 2.0), '999999999999999999.00')),
       TRIM (TO_CHAR (ROUND (3.00, 2.0), '999999999999999999.00')),
       TRIM (TO_CHAR (ROUND (323542.101, 2.0), '999999999999999999.00')),
       TRIM (TO_CHAR (ROUND (3.1067, 2.0), '999999999999999999.00'))


-- 产生随机数
1、RANDOM()
RANDOM has no arguments. Its result is a FLOAT8 data type


SELECT RANDOM();
random
-------------------
0.211625560652465
(1 row)




2、RANDOMINT
Returns a uniformly-distributed integer I, where 0 <= I < N, where N <= MAX_INT8. That is, RANDOMINT(N) returns one of the N integers from 0 through N-1.


RANDOMINT ( N )


Example:
In the following example, the result is an INT8, which is >= 0 and < N. In this case, INT8 is randomly chosen from the set {0,1,2,3,4}.
SELECT RANDOMINT(5);
randomint
----------
3
(1 row)
分享到:
评论

相关推荐

    Vertica 常用操作说明 v1

    ### Vertica 常用操作详解 #### 一、初始化与数据库创建 ##### 创建数据库 在Vertica系统中,可以通过图形界面(GUI)或者命令行工具来创建数据库。使用命令行方式创建数据库的一个典型示例如下: ```sh v001:/...

    Vertica_9.1.x完整文档

    文档中的“SQL参考手册”是开发人员和数据分析师的重要参考资料,列出了所有可用的SQL命令、语法和使用示例。 “Security and Authentication”部分详细阐述了Vertica的安全机制,包括用户权限管理、加密、审计日志...

    vertica jdbc 驱动driver

    Vertica JDBC驱动是连接到Vertica数据库的一种重要工具,它允许Java应用程序通过Java Database Connectivity (JDBC) API与Vertica数据库进行交互。Vertica是一个高性能、可扩展的列式数据库系统,广泛应用于大数据...

    vertica jdbc driver 驱动下载

    Vertica JDBC Driver是一款由Vertica公司提供的Java数据库连接器,用于在Java应用程序中与Vertica分析平台进行交互。它遵循Java Database Connectivity (JDBC) API标准,为开发人员提供了访问和操作Vertica数据库的...

    vertica数据库的连接jar包

    Java连接数据vertica数据库 就可以连接数据库 import java.sql.*; import java.util.Properties; Properties myProp = new Properties(); //用于设置数据库的用户名 myProp.put("user", "dbadmin"); //用于...

    Vertica_9.1文档

    SQL参考手册则提供了在Vertica中执行的SQL命令的详细信息和使用示例。 安全性与认证是Vertica中的重要方面,文档会指导用户如何确保数据库的安全性,并进行用户和权限的管理。此外,Vertica还提供了强大的扩展性,...

    HP Vertica Essentials

    《HP Vertica Essentials》是关于HP Vertica列式数据库的详细指南书籍。Vertica作为一款列式数据库系统,被HP公司收购,并在数据分析及挖掘领域展现出巨大潜力。列式数据库相比传统的关系型数据库,在处理列式数据...

    vertica windows客户端

    **标题:“Vertica Windows客户端”** **描述:**Vertica是一种高性能的多处理(MPP)数据库系统,由美国HP公司收购。它以其出色的查询速度、大规模数据处理能力和高可用性而受到赞誉。作为Vertica的客户端,它为用户...

    vertica备份恢复方案

    ### Vertica备份恢复方案 #### 一、Vertica备份 ##### 1.1 Vertica备份配置文件 在进行Vertica数据库备份之前,首先需要通过`vbr.py`工具设置一个备份配置文件。这个配置文件包含了关于备份的重要参数,如备份...

    Vertica 分析型数据库完全参考文档

    Vertica Documentation - Vertica Analytic Database Contents Vertica® 9.1.x Documentation 5 Vertica 9.1.x Supported Platforms 11 Vertica 9.1.x New Features and Changes 39 Vertica Concepts 64 ...

    vertica-jdbc-9.2.1-0.jar

    You can download the Vertica drivers here: https://my.vertica.com/download/vertica/client-drivers/ Once you have the files you want (i.e. vertica-jdbc-9.2.1-0.jar) you should be able to run a ...

    vertica 8.1 完整文档

    根据给定文件信息,我们将详细探讨HPE Vertica Analytics Platform版本8.1的相关知识点,这一版本的Vertica是适用于大规模并行处理(MPP)数据库架构的分析平台。由于文件信息中包含了文档的标题、描述和部分内容,...

    vertica文档

    《Vertica文档详解》 Vertica,由Vertica Systems公司开发,现为HP Vertica,是一款高性能、可扩展的企业级列式数据库管理系统,专为大数据分析而设计。它以其高效的数据处理能力、卓越的查询性能以及对大规模数据...

    Introduction Vertica Architecture_Overview

    Vertica数据库是由HP实验室开发的高性能分析型数据库管理系统,其设计主要用于处理大型数据仓库工作负载。Vertica在数据存储、索引和查询执行方面使用了列式存储架构,这使其在执行复杂的分析查询时比传统的行式存储...

    Vertica_technology

    Vertica是一款高性能的数据库软件,被设计用于处理和分析海量数据。Vertica数据库的基本原理是将数据结构化为表格、字段和记录,从而保证了数据的规范化存储。它可以在普通的硬件设备上运行,如Linux系统。支持的...

    HP_Vertica数据库从入门到精通

    惠普公司开发的HP Vertica数据库是一款面向分析的列式数据库管理系统,它支持大规模数据集的存储和高速查询。因其卓越的性能和高可靠性,Vertica数据库在大数据分析领域中备受关注。文档《HP_Vertica数据库从入门到...

    vertica中文手册(7.2)

    HPE Vertica分析型数据库是一款高性能、大规模并行处理的列式数据库管理系统。它设计用于实时分析和管理海量数据集,支持大数据分析应用,适用于数据仓库、商业智能(BI)以及机器学习分析等场景。下面我们将从手册中...

    HP vertica 6.1 essential training

    4. **数据加载与卸载**:学习使用装载工具如`vsql`、`COPY`命令和`Loader`进行数据导入导出,优化加载性能,理解批量加载和实时摄取的区别。 5. **SQL查询优化**:深入理解SQL语法和查询优化器的工作原理,学习编写...

    Vertica 7 JAVA SDK

    ### Vertica 7 JAVA SDK 知识点解析 #### 标题:Vertica 7 JAVA SDK **Vertica 7 JAVA SDK** 是一款为HP Vertica数据库设计的Java开发工具包,它允许开发者通过Java应用程序与HP Vertica数据库进行交互。 #### ...

    Vertica帮助文档

    6. **数据加载与备份恢复**:详细说明如何将数据导入到Vertica,包括使用装载工具如SQL COPY命令、Loader工具,以及如何进行定期备份和快速恢复,确保数据安全。 7. **安全管理与权限控制**:阐述Vertica的用户管理...

Global site tag (gtag.js) - Google Analytics