Node-RED:Рецепты/Как «разобрать» CSV-файл: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 17: | Строка 17: | ||
[[File:nodered_recipe_parse-csv.png|center]] | [[File:nodered_recipe_parse-csv.png|center]] | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
[{"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"]]}] | [{"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"]]}] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 25: | Строка 25: | ||
В примере выше в поток ''«впрыскивается»'' свойство '''«payload»''', содержащее [[CSV-данные]]. | В примере выше в поток ''«впрыскивается»'' свойство '''«payload»''', содержащее [[CSV-данные]]. | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
# Немного случайных данных: | # Немного случайных данных: | ||
a,b,c | a,b,c | ||
Строка 38: | Строка 38: | ||
В этом примере нода '''«CSV»''' также настроена на отправку одного сообщения со всеми этими данными. В результате получится сообщение со следующими данными в свойстве '''«payload»''': | В этом примере нода '''«CSV»''' также настроена на отправку одного сообщения со всеми этими данными. В результате получится сообщение со следующими данными в свойстве '''«payload»''': | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
[ | [ | ||
{ a: 80, b: 18, c: 2}, | { a: 80, b: 18, c: 2}, |
Текущая версия от 19:56, 23 мая 2023
Как «разобрать» 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», чтобы та снова могла собрать их в один массив.
См.также
Внешние ссылки