Node-RED:Рецепты/Как «разобрать» CSV-файл
Как «разобрать» 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», чтобы та снова могла собрать их в один массив.
См.также
Внешние ссылки