Создать таблицу с именем переменной

Мне нужно создавать таблицы ежедневно с именем в качестве даты в форме на (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...

Есть ли способ, где я мог бы сохранить значение в переменной, а затем использовать эту переменную в качестве имени таблицы или назначить приоритет, который сначала выполняет внутренний оператор выбора, чтобы дать мне имя, которое мне требуется.

Пожалуйста, предложите!!!

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 |
Другие вопросы по тегам