Экспорт данных в csv

Просмотр 15 сообщений - с 1 по 15 (из 19 всего)
  • Автор
    Записи
  • #29315
    a80808
    Участник

    Коллеги, а кто нибудь заморачивался экспортом данных каналов в csv или в xml без разметки (?), json…

    • Тема изменена 3 года, 1 месяц назад пользователем a80808.
    #29317
    manjey73
    Участник

    Что вы понимаете под экспортом в данном случае?
    Формулами, еще какими-то средствами?

    Из формул возможна запись в файл, по идее творите, что хотите.

    • Ответ изменён 3 года, 1 месяц назад пользователем manjey73.
    #29319
    a80808
    Участник

    Ну в принципе как то так… спасибо!
    Клиент хочет экспорт в свою систему, а там только csv, json, dbf…
    Оно конечно как вариант вроде бы можно dbf подключить как источник данных и модулем экспорта выгружать…
    Надо попробовать

    #29320
    JurasskPark
    Участник

    Я замарачивался, только чтобы экспорт в СУБД был. Для синхронизации данных.
    https://ibb.co/nsD2Pqf

    #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 например

    #29322
    a80808
    Участник

    Спасибо, попробую!

    #29323
    a80808
    Участник

    @manjey73, а если не трудно пример использования. Спасибо!

    #29324
    manjey73
    Участник

    Пример использование кода выше?

    В каналах, которые надо сохранить указывается формула SnmpData(Cnl)
    Потом в последнем канале указывается формула SaveSnmpData()

    в папке лога будет создаваться файл с данными, выбранных каналов. Пример пути в формуле указан для Linux

    #29325
    a80808
    Участник

    Спасибо!

    #29326
    manjey73
    Участник

    При использовании с json или csv надо думать и пробовать.

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

    В 5-й версии есть кнопка: https://ibb.co/6wvxvqS
    В 6-й версии из Postgres можно выгрузить.

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

    Если экспорт в реальном времени, то JSON можно забрать через веб-API. Но там требуется аутентификация, неизвестно умеет ли это другая система.

    #29330
    manjey73
    Участник

    В 5-й версии так понимаю это через утилиту?
    В 6-й либо через БД.

    Через БД можно на лету делать экспорт, а как без использования БД на лету делать выгрузку, если не через создание какого-то файла?

    И тем более если не все каналы надо выгружать, а только нужные?

    #29334
    a80808
    Участник

    «В 5-й версии есть кнопка:…»

    Увы, хотят периодически раз в несколько часов автоматом да еще в своем формате ((((

    #29336
    manjey73
    Участник

    Тогда путь примерно такой.
    Как в примере формула канала создает запись в словаре и обновляет его постоянно.
    Создать класс на этот словарь для сериализации в json.

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

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