2016-12-07 3 views
0

Есть ли способ создать таблицу с датой времени на ее имя, используя только sql-адрес postgres.Как создать таблицу с datetime в ее имени, используя postgres sql

Рассмотрим типичный создать таблицу:

CREATE TABLE someNewTable AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate; 

Что мне нужно, чтобы добавить временную метку в имени таблицы. Временная метка динамически создается. Я знаю, что это не обычный способ, но необходимый для целей архивирования. Так есть ли способ сделать это в чистом postgres sql?

CREATE TABLE someNewTableYYYYMMDDHHMMSS AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date <somedate; 

Заранее благодарен!

+0

Вам придется писать инструкцию SQL динамически с помощью скрипта, например, хранимой процедуры или некоторых внешних скриптов, таких как bash, python, vbscript и т. Д. – JNevill

ответ

1

Похоже, вы хотите выполнить динамический запрос: https://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

Тогда вам нужно что-то вроде этого: execute 'CREATE TABLE someNewTable' || to_char(current_timestamp, 'YYYYMMDDHHMMSS') || ' AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date < somedate;'

Или, если вы хотите, чтобы запустить его в psql то, что вам нужно использовать также DO оператора : DO $$ begin execute 'CREATE TABLE someNewTable' || to_char(current_timestamp, 'YYYYMMDDHHMMSS') || ' AS SELECT .... FROM someSourceTable WHERE date >= somedate AND date < somedate;' end $$ language plpgsql;

+0

Спасибо @ stas.yaranov! – RonPringadi

+0

Также следует отметить, что команда EXECUTE не является стандартным sql, поэтому всегда требуется DO $$ BEGIN .... language plpgsql; – RonPringadi

 Смежные вопросы

  • Нет связанных вопросов^_^