Хочу продолжить тему [15736] Экспорт и импорт должны работать из командной строки
Прошу прощения у разработчиков, я ошибся при выдаче техзадания. Забыл указать, что экспорт должен работать не только для локального сервера, но и для удалённого. Для этого понадобится ключ командной строки с IP адресом сервера, с которого нужно экспортировать данные.
Тут, думаю, CLI сервера не сильно поможет. Потребуется авторизация через токен и обращение к удалённым серверам. Как вариант мы можем открыть API для импорта и экспорта данных в формате ЛЭРС xml. Затем выполнить запросы можно с помощью cURL, который уже включён в комплект современных версий Windows.
Я приведу пример как это можно сделать в среде Powershell, но подойдёт и cmd и bash, если вы будете запускать команды на linux.
Для начала нужно будет получить токен для пользователя, которому доступны нужные объекты и точки и который обладает разрешениями “Просмотр и экспорт данных” и “Импорт и ручной ввод данных”.
Токен можно сохранить в переменную среды под именем, например, LERS_IMPORT_TOKEN для пущей безопасности, и чтобы не копировать длинный токен в каждую команду.
Экспорт данных в файл c:\temp\data.xml по всем точкам в группе “Мои объекты” можно будет выполнить следующей командой
curl -f -X "GET" -H "accept: text/xml" -H "Authorization: Bearer $LERS_IMPORT_TOKEN" -G --data "dt=Day" --data "from=30d" --data-urlencode "nodeGroup=Мои объекты" "http://localhost:10000/api/v1/Data/Export" > c:\temp\file.xml
Импорт:
curl -X "PUT" -H "Content-Type: text/xml" --data "@c:\temp\file.xml" -H "Authorization: Bearer $env:LERS_IMPORT_TOKEN" 'http://localhost:10000/api/v1/Data/Import?overwrite=true'
Как я понял, используя cURL и REST API, я смогу в скрипте Powershell получить токен и экспортировать/импортировать данные в формате xml.
Сейчас REST API не поддерживает экспорт и импорт xml. Да, такой вариант меня бы устроил.
Лучше, конечно, токен запрашивать не в скрипте, а сформировать его заранее и сохранить в переменной среды, чтобы лишний раз не использовать пароль. А так да, имея токен можно будет это сделать.
Пожалуйста откройте REST API для импорта и экспорта данных в формате ЛЭРС xml.
Мы откроем API, а формат вы сможете выбрать самостоятельно. По умолчанию будет json. Для экспорта в XML нужно будет передать заголовок Accept: text/xml
Потом этот файл можно будет или импортировать через REST, указав заголовок Content-Type: text/xml
, или импортировать через АРМ или веб интерфейс.
В общем, в результате обсуждений решили, что API будет указывать начало и конец периода, как для всех остальных конечных точек. Сделаем так для того, чтобы все REST API были максимально понятны и однообразны.
Для экспорта нужно будет воспользоваться маршрутом
GET http://localhost:10000/api/v1/Data/Export/2025-01-01/2025-03-10?nodeGroup=Название_группы_объектов
Authorization: Bearer <ТОКЕН>
Accept: text/xml
В ответе вернётся файл в формате XML, который можно использовать для импорта.
Импорт выполняется таким запросом
PUT http://localhost:10000/api/v1/Data/Import?overwrite=true
Authorization: Bearer <ТОКЕН>
Content-Type: text/xml
В теле передаётся XML-файл с данными.
С помощью этих API можно автоматизировать импорт и экспорт в powershell с использованием Invoke-RestMethod, или в любой оболочке с помощью curl.
Сделаем в следующей версии 3.61.