ModDBExport

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Автор
    Сообщения
  • #28512
    hals
    Участник

    Экcпорт в БД 6.0.0.0

    PostgreSQL
    Текущие данные | Триггер: При получении

    Пропустить неизмененные данные — работает не корректно. Не важно стоит галочка или нет, неизмененные данные записываются как NULL.

    INSERT INTO tablename
    (
      val2
    , val3
    , val4
    , val5
    )
    VALUES 
    (
      NULLIF(@val4002,0)
    , NULLIF(@val4003,0)
    , NULLIF(@val4004,0)
    , NULLIF(@val4005,0)
    )
    ON CONFLICT DO NOTHING;

    Текущие данные | Триггер: По таймеру
    работает корректно

    #28519
    Mikhail
    Модератор

    Чтобы уточнить параметры, при которых возникает проблема, сделайте, пожалуйста скриншоты параметров экспорта текущих данных и параметров запроса.

    #28524
    hals
    Участник

    вот с такими настройками, если данные не изменились, в базу записывается NULL
    вот с такими настройками, если данные не изменились, в базу записывается NULL

    сам запрос
    сам запрос

    а вот так, все работает отлично
    а вот так, все работает отлично

    • Ответ изменён 2 года, 7 месяцев назад пользователем hals.
    #28526
    Mikhail
    Модератор

    Вы затронули интересную тему. Модуль работает следующим образом:

    Для триггера «При получении»
    1. Запрос выполняется, когда данные получены Сервером от Коммуникатора.
    2. Коммуникатор по умолчанию отправляет только изменившиеся данные и 1 раз в минуту все данные. Поэтому галочка в модуле не повлияла. Нужно также настроить отправку всех тегов в Коммуникаторе.
    3. Коммуникатор отправляет текущие данные после опроса устройства. Если у Вас каналы 4001-4011 относятся к одному устройству, то запрос выполнится один раз. А если каналы от разных устройств, то запрос выполнится несколько раз, и часть данных будут пустые.
    4. Модуль не записывает NULL. Он пишет 0. Рекомендую завести в таблице также поле для статуса канала, либо в запросе отсекать статус = 0.

    Для триггера «По таймеру»
    1. Запрос выполняется естественно по таймеру.
    2. Данные берутся из текущих данных Сервера. Поэтому будут заполнены все переменные запроса, у которого стоит галочка «Одним запросом».

    Таким образом, если стоит галочка «Одним запросом», то при использовании триггера «При получении» нужно настроить Коммуникатор, чтобы он отправлял все теги и снять «Пропустить неизменённые данные».

    #28529
    Mikhail
    Модератор
    #28552
    hals
    Участник

    Спасибо.
    Начал экспериментировать с RapidSCADA 6, на ранней версии, опыта нет.
    Очень не хватает документации. Все методом тыка, форум ну и старая документация.
    Хороший продукт у Вас получился, очень нравится архитектура.
    Надеюсь на появление добротной документации.

    #28556
    Mikhail
    Модератор

    Спасибо за положительный отзыв.
    Документацию, конечно, будем разрабатывать после портирования оставшихся модулей.

    #30206
    JurasskPark
    Участник

    Доброй ночи! 🙂
    Настраивал экспорт событий в MSSQL и нашёл одну особенность.
    Что переменная @ask объявлена, а вот в списке переменных модуля (как справка) её нет.

    https://github.com/RapidScada/scada-v6/blob/f0783eee65e01daccbd2c4e6b65943fffbd58855/ScadaServer/OpenModules/ModDbExport.Logic/Scripts/export_mssql.sql#L34

    https://i.ibb.co/rsPh14K/Mod-Db-Export-SQL.png

    #30209
    Mikhail
    Модератор

    Спасибо, что заметили. Надо будет исправить.

    #30833
    Mikhail
    Модератор

    Примеры скриптов для разных БД.

    #40964
    Dmitry64
    Участник

    Добрый день!

    Вопрос также по модулу экспорта.
    В настройках модуль включен, вижу что он загружается в логах:

    2025-10-31 13:47:01 [SCADA201][SCADA201$][ACT] Модуль ModDbExport 6.1.1.2 загружен из файла C:\Program Files\SCADA\ScadaServer\Mod\ModDbExport.Logic.dll

    В настройках модуля прописаны настройки подключения к БД POstgres и создан запрос на экспорт текущих данных при получении, но после передачи конфигурации в логе просто нет информации о работе модуля. Нет ни ошибок, ни попыток подключения к БД не вижу, как будто он ничего не делает. И со стороны БД я не вижу попыток подключения указанного пользователя к базе.
    Что я не так делаю?

    #40965
    Dmitry64
    Участник

    с подключением разобрался, к базе подключение есть.
    Но теперь в логах пишет:

    POSITION: 63
    2025-10-31 14:22:56 Ошибка при экспорте среза по запросу «Запрос 1»: 42703: столбец «datetime» не существует

    POSITION: 63
    2025-10-31 14:22:57 Ошибка при экспорте среза по запросу «Запрос 1»: 42703: столбец «datetime» не существует

    При этом в самой базе я вижу 2 таблицы и там есть колонки «datetime»
    https://iimg.su/i/sYiz7O

    • Ответ изменён 1 месяц, 1 неделя назад пользователем Dmitry64.
    • Ответ изменён 1 месяц, 1 неделя назад пользователем Mikhail.
    #40984
    Mikhail
    Модератор

    В SQL-скрипте ошибка. Откуда Вы его скопировали?
    Если нужны архивы в PostgreSQL, то рекомендую включить архивы в настройках Сервера, вместо модуля экспорта. Модуль экспорта обычно используется для более нестандартных задач.

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Для ответа в этой теме необходимо авторизоваться.