Node-RED:Рецепты/Как «разобрать» CSV-файл: различия между версиями
Myagkij (обсуждение | вклад) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{Node-RED/Панель перехода}} | {{Node-RED/Панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Как «разобрать» CSV-файл<ref>[https://cookbook.nodered.org/basic/parse-csv cookbook.nodered.org - Parse CSV input]</ref>= | =Как «разобрать» CSV-файл<ref>[https://cookbook.nodered.org/basic/parse-csv cookbook.nodered.org - Parse CSV input]</ref>= | ||
Строка 53: | Строка 50: | ||
=См.также= | =См.также= | ||
{{ads}} | |||
=Внешние ссылки= | =Внешние ссылки= | ||
Версия от 10:10, 7 августа 2022
Как «разобрать» 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», чтобы та снова могла собрать их в один массив.
См.также
Внешние ссылки