在 Vertica 中使用系统日期创建 table

create table with system date in Vertica

我希望从 table 中创建 table,例如:

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();

查看下面的代码

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 时间戳附加到 table名称:

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)

您也可以构建变量并在 table create

上使用它
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)