powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Втавка в неиизвестную таблицу через процедуру
2 сообщений из 2, страница 1 из 1
Втавка в неиизвестную таблицу через процедуру
    #39670698
pg_delphi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги.
С PostgreSQL работать начал совсем недавно, поэтому решил посоветоваться.

Есть много однотипных табличек (вместо партиций).
Вставка данных в них должна осуществляться через процедуру (требования безопасности).
В какую именно таблицу вставлять данные - зависит от параметров вызова процедуры.
Данные поступают в формате JSON.
Вставка одновременно осуществляется 20-30 потоками по 100-500 строк за вызов. Каждый поток в своей сессии.
Одновременно могут быть вызовы для вставки в одну таблицу из разных потоков (сессий).
Всталяются только свежи данные (уже имеющиеся по ключу не перетираются).
После вставки данных обязательно нужно определить MIN(ID), MAX(ID), MIN(DTTM), MAX(DTTM), COUNT(*);,

Вопрос, собственно, в том какую конструкцию лучше использовать с точки зрения производительности и отказоустойчивости.
Сам вижу вариант с использованием TEMP VIEW. Буду крайне признателен, если прокомментируете в чем плюсы / минусы подхода или посоветуете из опыта более эффективных путь.
Использовать ЦИКЛЫ или текстовые преобразования JSON в формат совместимый с INSERT VALIES (...),(...),(...) - не хочется.

Postgres 10, WINDOWS.

Заранее спасибо!

Вариант через использование TEMP VIEW:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
EXECUTE 'CREATE OR REPLACE TEMP VIEW TMP_VIEW as select * from '|| table_name ;
WITH ins as (
  INSERT INTO TMP_VIEW (ID, DTTM, VAL)
  SELECT ID, DTTM, VAL
    FROM json_to_recordset(in_txt::json) as x(ID BIGINT, DTTM TIMESTAM WITH TIME ZONE, VAL NUMERIC(18,8))
  ON CONFLICT (ID) DO NOTHING
  RETURNING *
)
SELECT MIN(ID), MAX(ID) , MIN(DTTM), MAX(DTTM), COUNT(*)
INTO MIN_ID, MAX_ID, MIN_DTTM, MAX_DTTM, CNT
FROM ins;
...
Рейтинг: 0 / 0
Втавка в неиизвестную таблицу через процедуру
    #39671162
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
динамический запрос EXECUTE
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Втавка в неиизвестную таблицу через процедуру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]