1

我需要每天在表格中创建名称为日期的表格(yyMMdd),我尝试了这个:

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

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

然后尝试从设置的参数: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...

有没有一种方法可以将一个值存储在一个变量中,然后将该变量用作表名,或者分配内部选择语句首先执行的优先级,以便给我我需要的名称。

请推荐!!!

4

1 回答 1

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 |
于 2015-05-15T12:29:55.283 回答