使用变量名

时间:2015-05-15 08:51:35

标签: variables vertica vsql

我需要每天创建表格,其名称为(yyMMdd)格式的日期,我试过这个:

dbadmin=> \set table_name 'select to_char(current_date, \'yyMMdd \')'
dbadmin=> :table_name;

to_char
---------
150515
(1 row)

然后尝试使用set参数创建带有表名的表:table_name,但得到了这个

dbadmin=> create table :table_name(col1 varchar(1));
ERROR 4856: Syntax error at or near "select" at character 14
LINE 1: create table select to_char(current_date, 'yyMMdd ')(col1 va...

有没有办法可以在变量中存储一个值,然后将该变量用作表名,或者指定内部select语句首先执行的优先级,以便为我提供所需的名称。

请建议!!!

1 个答案:

答案 0 :(得分:1)

试试这个

  • 由于任何原因,存储的变量带有一些空间,我不得不将其删除,也无法开始命名表从数字开始,所以我不得不添加一些内容形式如 tbl _
  • 简而言之,您只需要存储退出的值,这样您就需要做一些额外的工作并执行查询。

    \set table_name `vsql -U dbadmin -w d -t -c "select concat('tbl_',replace(to_char(current_date, 'yyMMdd'),' ',''))"`
    

创建表格

create table :table_name(col1 varchar(1));
(dbadmin@:5433) [dbadmin] *> \d tbl_150515
Schema      | public
Table       | tbl_150515
Column      | col1
Type        | varchar(1)
Size        | 1
Default     |
Not Null    | f
Primary Key | f
Foreign Key |