Стартовая страница › Форумы › Понять, как работает ПО › Вопросы по Модуль экспорта в БД
- В этой теме 16 ответов, 3 участника, последнее обновление 4 года, 10 месяцев назад сделано baur.
-
АвторСообщения
-
17.04.2017 в 06:36 #5343baurУчастник
Добрый день, у меня пару вопросов по Модуль экспорта в БД
1.
Как работает Вставить или обновить существующие архивные данные?как я понял это требуется в для восстановление данных если на некоторые время пропал связь. Но не понятно, насколько глубоко? по идее когда я впервые запускаю скрипт должен был экспортироваться все данные в БД который есть в локальном архиве, но этого не происходило.
2. Как разграничить каналы для экспорта в БД, например если не надо только определенны каналы.
3. Как можно экспортировать только минутные срезы или часовые (или даже кастномный, например каждый 5 мин) но с условием, чтобы текущие данные не пропали.
Скажем указываем время записывать данные по минутам:
Создается строка и начинаем обновить эту строку и через минуту создадим другую и начинаем обновить и т.д., таки образом не теряем текущие данные- Эта тема была изменена 4 года, 10 месяцев назад от Mikhail.
17.04.2017 в 08:41 #5347MikhailМодераторДобрый день!
1. Архивные данные могут приходить только от тех устройств, которые поддерживают работу с архивами и для которых это реализовано в драйвере. Например, ВКТ-7.
При скачивании архивных данных вызывается соответствующий SQL.2. Просьба уточнить 2-й вопрос.
3. Разработать ту модель БД, которая Вам требуется, и разработать набор SQL-скриптов для Модуля экспорта в соответствии с Вашей моделью БД.
3-й вопрос подразумевает разработку базы данных под Ваши требования, которая выходит за рамки поддержки и может быть выполнена на заказ.
17.04.2017 в 08:55 #5351baurУчастник1. Тогда что случиться если пропал связь с БД на час даже больше, мы теряем данные? Например CogentDataHub кэширует данные если пропал связь и отправляет пропущенные данные как только появится связь с БД.
2. По умолчанию скрипт экспортирует все каналы, как бы фильтровать чтобы экспортировать только выбранные каналы. Например у меня 100 каналов требуется экспортировать только 10 каналов.
17.04.2017 в 09:35 #5352MikhailМодератор1. Rapid SCADA складывает данные, отправляемые в БД в очередь (кэш), и отправляет по мере наличия связи. Если в Вашей системе велика вероятность проблем связи с БД, то возможно потребуется доработка модуля экспорта, чтобы увеличить размер этой очереди.
2. Логику такого фильтра можно включить в SQL-скрипт.
18.04.2017 в 05:22 #5362baurУчастник1. Ясно, судя по логу лимит 100 записей. Да, не плохо было бы увеличить размер кэша. В аналогичной программе кэш в виде текстового файла, размер задается в Mb
также предусмотрен триггер записи в БД (не всегда записывать, это был как раз 3 вопрос)
и фильтр (не все записывать)
2. Спасибо, логику включил в SQL-скрипт
3. Можно триггером, но не плохо было бы из коробки
19.04.2017 в 13:42 #5370MikhailМодераторСпасибо за Ваши пожелания. Если стартует доработка данного модуля, учтём их.
20.04.2017 в 13:57 #5400baurУчастники фильтр (не все записывать)
не правильно указал скрин для настроек фильтра
25.04.2017 в 05:42 #5479baurУчастникОчередь в 100 записей явно не хватает, потом этот очередь для каждого сигнала или для всех? желательно чтобы был для каждого сигнала.
У нас объекты разбросаны по регионам, так что переполнение очереди для нас обычное явление и нежелательное (((25.04.2017 в 13:06 #5492MikhailМодераторДобрый день!
Длина очереди устанавливается для всех каналов.
Можем обсудить условия (цену и сроки) доработки модуля, чтобы он работал в таких условиях.25.04.2017 в 13:53 #5505baurУчастникпока Rapid Scada у нас на уровне эксперимента, поэтому трудно будет убедить начальство. Посмотрим когда запустим пару реальных схем, как говорится: аппетит приходит во время еды …
26.04.2017 в 13:52 #5544MikhailМодераторДа, разумно будет накопить «пакет» необходимых изменений, а потом заказать необходимые доработки сразу по всем вопросам. В процессе реализации пилотных проектов обычно пользуются существующими возможностями.
25.06.2019 в 04:29 #12431TawУчастникВопрос к “baur”, и к остальным. Как вы решили проблему
2. По умолчанию скрипт экспортирует все каналы, как бы фильтровать чтобы экспортировать только выбранные каналы. Например у меня 100 каналов требуется экспортировать только 10 каналов.
Вы написали Спасибо, логику включил в SQL-скрипт
Как выглядит эта логика и можно ли поподробнее как вы сформировали Sql запрос. Можете его привести в этой теме?25.06.2019 в 07:16 #12434baurУчастникВот самый простой пример
T-SQL (MSSQL)IF (@CnlNum in (1,2,3) and @status = 1)
BEGIN
INSERT …
END;а так на стороне БД куча скриптов который управляет потоком данных, который поступает в бешеном темпе. Все это сложно без доработки модуля …
- Этот ответ был изменен 4 года, 10 месяцев назад от baur.
25.06.2019 в 10:47 #12443TawУчастникНа стороне БД куча хранимых процедур и триггеров. Но у меня даже в Модуле не хочет работать sql запрос
IF (@cnlnum = 270 )
BEGIN
INSERT INTO cnldata (datetime, cnlnum, val, stat) VALUES (@dateTime, @cnlnum, @val, @stat);
END;
В логе ошибка
INSERT INTO cnldata (datetime, cnlnum, val, stat) VALUES’ at line 18
2019-06-25 15:45:33 Unable to enqueue current data. The maximum size of the queue 100 is exceeded
2019-06-25 15:45:33 Unable to enqueue current data. The maximum size of the queue 100 is exceeded
2019-06-25 15:45:34 Unable to enqueue current data. The maximum size of the queue 100 is exceeded
2019-06-25 15:45:34 Error export current data to DB MySQL — 127.0.0.1:3306: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘IF (601 = 270 )
BEGIN
INSERT INTO cnldata (datetime, cnlnum, val, stat) VALUES’ at line 1825.06.2019 в 10:58 #12444baurУчастникто что я указал, это диалект T-SQL для MySQL по другому наверно
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.