Стартовая страница › Форумы › Понять, как работает ПО › Экспорт данных в csv
- В этой теме 18 ответов, 4 участника, последнее обновление 3 года, 1 месяц назад сделано
Mikhail.
-
АвторЗаписи
-
02.08.2023 в 11:35 #29315
a80808УчастникКоллеги, а кто нибудь заморачивался экспортом данных каналов в csv или в xml без разметки (?), json…
-
Тема изменена 3 года, 1 месяц назад пользователем
a80808.
02.08.2023 в 11:40 #29317
manjey73УчастникЧто вы понимаете под экспортом в данном случае?
Формулами, еще какими-то средствами?Из формул возможна запись в файл, по идее творите, что хотите.
-
Ответ изменён 3 года, 1 месяц назад пользователем
manjey73.
02.08.2023 в 11:54 #29319
a80808УчастникНу в принципе как то так… спасибо!
Клиент хочет экспорт в свою систему, а там только csv, json, dbf…
Оно конечно как вариант вроде бы можно dbf подключить как источник данных и модулем экспорта выгружать…
Надо попробовать02.08.2023 в 11:59 #29320
JurasskParkУчастникЯ замарачивался, только чтобы экспорт в СУБД был. Для синхронизации данных.
https://ibb.co/nsD2Pqf02.08.2023 в 12:03 #29321
manjey73Участник// Список каналов создается формулой SnmpData(Cnl) для входных каналов // string pathSnmp = @"/var/log/scada/ScadaServer/Log/snmpdata.txt"; protected Dictionary<int, double> snmpData = new Dictionary<int, double>(); public double SnmpData (double res) { if (!snmpData.ContainsKey(CnlNum)) { snmpData.Add(CnlNum, res); } else { snmpData[CnlNum] = res; } return res; } public double SnmpRead(int cnlNum) { return snmpData[cnlNum]; } // Сохранить данные выбранных каналов в файл данных SNMP public double SaveSnmpData() { File.WriteAllLines(pathSnmp, snmpData .Select(pair => String.Join(" ", pair.Key, pair.Value.ToString().Replace(",",".")))); return snmpData.Count; }Вот пример сохранения файла для каналов, использовал для передачи по snmp
Думаю можно и в json сделать сохранение файла по аналогии, для json наверное придется поколдовать с классами сериализации и использовать System.Text.Json например02.08.2023 в 12:07 #29322
a80808УчастникСпасибо, попробую!
02.08.2023 в 13:37 #2932302.08.2023 в 14:19 #29324
manjey73УчастникПример использование кода выше?
В каналах, которые надо сохранить указывается формула SnmpData(Cnl)
Потом в последнем канале указывается формула SaveSnmpData()в папке лога будет создаваться файл с данными, выбранных каналов. Пример пути в формуле указан для Linux
02.08.2023 в 14:21 #29325
a80808УчастникСпасибо!
02.08.2023 в 14:22 #29326
manjey73УчастникПри использовании с json или csv надо думать и пробовать.
02.08.2023 в 14:49 #29327
MikhailМодераторВ 5-й версии есть кнопка: https://ibb.co/6wvxvqS
В 6-й версии из Postgres можно выгрузить.02.08.2023 в 14:52 #29328
MikhailМодераторЕсли экспорт в реальном времени, то JSON можно забрать через веб-API. Но там требуется аутентификация, неизвестно умеет ли это другая система.
02.08.2023 в 14:56 #29330
manjey73УчастникВ 5-й версии так понимаю это через утилиту?
В 6-й либо через БД.Через БД можно на лету делать экспорт, а как без использования БД на лету делать выгрузку, если не через создание какого-то файла?
И тем более если не все каналы надо выгружать, а только нужные?
02.08.2023 в 16:57 #29334
a80808Участник«В 5-й версии есть кнопка:…»
Увы, хотят периодически раз в несколько часов автоматом да еще в своем формате ((((
02.08.2023 в 17:17 #29336
manjey73УчастникТогда путь примерно такой.
Как в примере формула канала создает запись в словаре и обновляет его постоянно.
Создать класс на этот словарь для сериализации в json.С нужным периодом вызывать формулу сохранения в файл, которая будет создавать из словаря список классов и запускать сериализацию в json
-
Тема изменена 3 года, 1 месяц назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.