在工作中用到vertica,环境都是直接HP的人来部署的,在网上查也很少有学习资料,一下总结了一部分常用操作,仅供参考:
- 进入vertica的sql环境:vsql -d dbname -w passwd
- 创建序列:CREATE SEQUENCE sq1 MAXVALUE 5000 START 1;
- 使用序列:SELECT NEXTVAL('my_seq');
- 删除序列:DROP SEQUENCE seq_name;
- 修改列名:alter table csaprp.tb_rp_ct_olcs_work_list_dispose_mon rename statis_date to statis_month;
- 增加列:alter table test.DIM_DETAIL_SVCTYPE add column if_app numeric(10,0);
- 删除表列:alter table test.DIM_DETAIL_SVCTYPE drop column if_app;
- 查找用户:select * from v_catalog.users;
- 修改表为分区表: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;
- 查询表:select * from tables;
- 查询注释:select * from comments where object_name='tb_rp_ct_rena_new_in_man_audit_day';
- 产生随机数:SELECT RANDOM();
- 从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 '|';
- 显示表结构:\d table;
- 从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 '|';
- 更改字段数据类型
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)之间可以互修改。
- 修改表所属的用户
alter table test.fct_fournet_wlanap_equp_ana_d owner to dev_test; - vertica怎么修改一个表字段允许为空呢,查看官方文档得到:
alter table TABLE_NAME alter column prov_name drop not NULL;
杀锁:
SELECT transaction_id FROM locks; ---查看transaction_id
SELECT * FROM sessions where transaction_id=<>;
SELECT INTERRUPT_STATEMENT('<session_id>', '<statement_id>');