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