Node-RED:Рецепты/Как «разобрать» CSV-файл

Материал из Онлайн справочника
Версия от 18:40, 29 апреля 2019; Myagkij (обсуждение | вклад) (→‎Пример)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Как «разобрать» CSV-файл[1]

Проблема

Вам нужно «разобрать» CSV-файл, чтобы затем работать с его данными.

Решение

Чтобы «разобрать» CSV-файл и сгенерировать на его основе JavaScript-объект, воспользуйтесь нодой «CSV».

Пример

[{"id":"73e4e16.4d9742","type":"inject","z":"64133d39.bb0394","name":"Inject","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":780,"wires":[["2bef78fd.ae70f8"]]},{"id":"90ed51dc.dcc71","type":"csv","z":"64133d39.bb0394","name":"","sep":",","hdrin":true,"hdrout":false,"multi":"mult","ret":"\\n","temp":"","skip":"1","x":410,"y":780,"wires":[["9aace6e7.adc538"]]},{"id":"9aace6e7.adc538","type":"debug","z":"64133d39.bb0394","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":570,"y":780,"wires":[]},{"id":"2bef78fd.ae70f8","type":"template","z":"64133d39.bb0394","name":"CSV data","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"# This is some random data\na,b,c\n80,18,2\n52,36,10\n91,18,61\n32,47,65","output":"str","x":260,"y":780,"wires":[["90ed51dc.dcc71"]]}]

Разбор

В примере выше в поток «впрыскивается» свойство «payload», содержащее CSV-данные.

# Немного случайных данных:
a,b,c
80,18,2
52,36,10
91,18,61
32,47,65

Нода «CSV» настроена на то, чтобы не обращать внимание на первую строчку входного файла, поэтому начальная строчка с комментарием будет проигнорирована. В результате первой она прочтет строчку с названиями столбцов, а затем остальные ряды со значениями.

В этом примере нода «CSV» также настроена на отправку одного сообщения со всеми этими данными. В результате получится сообщение со следующими данными в свойстве «payload»:

[
    { a: 80, b: 18, c: 2},
    { a: 52, b: 36, c: 10},
    { a: 91, b: 18, c: 61},
    { a: 32, b: 47, c: 65},
]

Вы также можете настроить ноду «CSV» таким образом, чтобы она генерировала для каждого ряда данных по отдельному сообщению. В этом режиме к сообщениям также будет добавляться свойство «msg.parts», благодаря чему их затем можно будет передать ноде «Join», чтобы та снова могла собрать их в один массив.

См.также

Внешние ссылки