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...

変数に値を格納し、その変数をテーブル名として使用する方法や、内部の select ステートメントが最初に実行して必要な名前を付ける優先順位を割り当てる方法はありますか?

提案してください!!!

4

1 に答える 1

1

これを試して

  • なんらかの理由で、保存された変数にはスペースがあり、それを削除する必要があり、数字で始まるテーブルの名前付けを開始できないため、 tbl_のような形式で何かを追加する必要がありました
  • つまり、exit の値を保存するだけでよいので、追加の作業を行ってクエリを実行する必要があります。

    \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 に答える