Показать / скрыть оглавление

    PostgreSQL-команда

    Узел PostgreSQL-команда позволяет выполнить команду на языке SQL или PL/pgSQL.
    Узел используется для подготовки хранилища к дальнейшей вставке или обновлению данных, используется для выполнения функций в хранилище, создания, удаления таблиц или быстрого очищения их содержимого с помощью команды TRUNCATE.
    В качестве подключения к хранилищу PostgreSQL используется текущее подключение.

    Совет

    Используйте узел PostgreSQL-команда для очистки таблицы перед вставкой в неё данных с помощью узла Аналитическая таблица.

    Входные данные — отсутствуют.
    Выходные данные — отсутствуют.

    Для указания настроек соединения с сервером БД к узлу PostgreSQL-команда можно добавить входной порт подключения к PostgreSQL.

    Свойства узла

    • Название

    Укажите название узла, которое будет отображаться на диаграмме процесса и в журнале событий.

    • Описание

    Укажите произвольное описание узла.

    • Язык
      Выберите язык команды, SQL или PL/pgSQL, процедурный язык SQL.

    • Текст команды
      Введите корректный текст команды на выбранном языке.

      Замечание

      При выбранном языке SQL, в хранилище будет выполнена SQL команда, соответствующая введенному Тексту команды.

      Замечание

      При выбранном языке PL/pgSQL, в хранилище будет выполнена анонимная функция, содержащая Текст команды.

      Замечание

      Для использования в тексте команды параметров процесса и расчетных параметров воспользуйтесь Переменными.

    • Переменные
      Добавьте вычисляемые переменные, задавая им имя и формулу на языке Колибри. В формуле используйте параметры процесса, расчетные параметры и функции языка Колибри.
      В тексте команды на языке SQL обращайтесь к переменной по имени через символ @, указывая @имя_переменной.
      В тексте команды на языке PL/pgSQL обращайтесь к переменной по имени без дополнительных символов.

      Замечание

      В имени переменной допускаются только латинские буквы, цифры и знак "_". При этом имя переменной не должно начинаться с цифры.

    Предупреждение

    Узел предназначен для использования экспертом, его некорректная настройка или использование может привести к потере данных или разрушению СУБД.
    Требует навыков работы с хранилищем PostgreSQL и устройством хранилища данных, в которых будет выполняться запрос.

    Пример команды на языке SQL

    1. Пример команды на языке SQL для очистки аналитической таблицы перед вставкой в неё данных.

    2. Пример команды на языке SQL для удаления данных по условию, содержащему параметр процесса.

    Пример команды на языке PL/pgSQL

    1. Пример команды на языке PL/pgSQL для выполнения вставки строк в таблицу.

    Данная настройка узла PostgreSQL-команда соответствует выполнению в хранилище команды:

    DO LANGUAGE plpgsql $$ BEGIN
        FOR i IN 1..5 LOOP
            INSERT INTO online_shop.warehouse(name)
            VALUES('Склад №' || i);
        END LOOP;
    END $$
    
    1. Пример команды на языке PL/pgSQL для выполнения вставки строк в таблицу с использованием в вставляемых данных параметра процесса.

    Данная настройка узла PostgreSQL-команда соответствует выполнению в хранилище команды:

    DO LANGUAGE plpgsql $$ BEGIN
        FOR i IN 1..5 LOOP
            INSERT INTO online_shop.warehouse(name, comment)
            VALUES('Склад №' || i, 'Формирование списка складов (комментарий к загрузке)');
        END LOOP;
    END $$
    
    1. Пример команды на языке PL/pgSQL с объявлением локальных переменных в тексте команды.

      Данная настройка узла PostgreSQL-команда соответствует выполнению в хранилище команды:

      DO LANGUAGE plpgsql $$ BEGIN
        DECLARE
          _r record;
          _mng text[];
        BEGIN
      
          SELECT ARRAY_AGG(fio) into _mng FROM online_shop.manager;
      
          FOR _r IN SELECT name, email FROM security.profile WHERE name != ANY(_mng)
          LOOP
            EXECUTE 'INSERT INTO online_shop.manager(fio, email)
                     VALUES(' || quote_literal(_r.name) || ', ' || quote_literal(_r.email) || ')';
          END LOOP;
      
        END;
      END $$
      

    Частые случаи использования

    • Загрузка данных для анализа их в виджете
    В начало страницы