Я новичок в PostgreSQL и хотел бы знать о возможных передовых методах и о том, возможно ли вообще до автоматически генерировать и заполнять таблицы в одной схеме на основе таблиц, представленных в другой схеме , возможно, используя триггеры и функции. Причина, по которой я это делаю, состоит в том, что мне сказали, что предпочтительнее выполнять вычисления в базе данных, чем извлекать данные, выполнять вычисления и вставлять их снова. Я должен упомянуть, что я могу сделать последнее в python, используя psycopg2 .
Я понимаю, что триггеры и функции могут использоваться для автоматического заполнения столбцов на основе в других столбцах той же таблицы, но я еще не смог создать код, который делает то, что мне нужно, поэтому я ищу здесь помощь и подсказки. Чтобы прояснить свой вопрос, я хотел бы описать, как моя база данных выглядит прямо сейчас:
Схема с именем raw_data
, заполненная произвольным и увеличивающимся числом таблиц, связанных с измерениями, выполненными в разных местах:
area1 (timestamp, value)
area2 (timestamp, value)
area3 (timestamp, value)
- ...
Каждая таблица состоит из двух столбцов timestamp
и value
. Новые данные постоянно добавляются в каждую таблицу. Таблица создается с использованием следующего кода в python, с использованием psycopg2 с активным подключением con
к базе данных:
table_name = schema_name + '.' + table_name.lower()
sql = ('CREATE TABLE ' + table_name + ' ('
'timestamp varchar (19) PRIMARY KEY, '
'value numeric (5,2) NOT NULL, '
');')
try:
cur = con.cursor()
cur.execute(sql)
con.commit()
except psycopog2.Error as e:
con.rollback()
print(e)
finally:
cur.close()
Моя цель - сделать "живое" (выполняется, как только новое значения вставляются в таблицу в схеме raw_data
) анализа (вычислений) данных, которые доступны в каждой таблице в схеме raw_data
, но я также заинтересован в том, чтобы не изменять таблицы в raw_data
, поскольку Позже я планирую провести несколько «живых» анализов разными методами, все на основе данных в таблицах в raw_data
. Поэтому я хотел бы создать схему (с именем method1
), которая автоматически генерирует таблицы внутри себя на основе таблиц, представленных в схеме raw_data
.
Если возможно, я бы также хотел, чтобы новые таблицы были быть заполненным указанным количеством строк из столбца (timestamp)
, а также значениями, которые были вычислены из столбца (value)
в таблице raw_data
.
Возможно ли это вообще или следует придерживаться вытягивания данные, выполнение расчетов и повторная вставка с использованием python и psycopg2?
Я хотел бы заранее извиниться, если я не понимаю, как я использую технические термины, так как я не прошел никакого формального обучения в SQL или python.
Спасибо, что нашли время прочитать мой вопрос!