我希望从表中创建表格,如:
CREATE TABLE as archive.POSTPAID_GSMIS_`date +%Y%m%d%H%M%S`
(
select * from
POSTPAID.STAGE_GS10);
commit;
想知道我是否能在Vertica中做到这一点?
我想过将值存储在一个变量中:
\set x 'select now();'
create table :x (int a);
但\echo :x
给了我select now();
。
答案 0 :(得分:1)
见下面的代码
dbadmin=> \set date `date +%Y%m%d%H%M%S`
dbadmin=> \echo :date
20170815112242
CREATE TABLE dba.POSTPAID_GSMIS_:date
as
select '1234' as id from dual
;
CREATE TABLE
dbadmin=> select * from dba.POSTPAID_GSMIS_:date;
id
------
1234
(1 row)
将Unix时间戳附加到表名:
dbadmin=> \set env `date +%s`
dbadmin=> \echo :env
1502843933
dbadmin=> create table dba.tbl_:env (id int);
CREATE TABLE
dbadmin=> select * from dba.tbl_1502843933;
id
----
(0 rows)
您也可以构建变量并在表创建
上使用它dbadmin=> \set var `var="blabla" && echo $var`
dbadmin=> \echo :var
blabla
dbadmin=> create table dba.tbl_:var (id int);
CREATE TABLE
dbadmin=> select * from dba.tbl_blabla;
id
----
(0 rows)