Читая CSV, я хотел бы установить определенные строки как различные типы записей - PullRequest
0 голосов
/ 14 апреля 2020

Вот данные узла sudo, с которыми я работаю (в текущей версии 4000 строк):

title temp
a.    1
b.    
c.    4
d.   

Вот как я сейчас читаю эти данные:

LOAD CSV WITH HEADERS FROM "file:///nodes.csv" AS nodes
FIELDTERMINATOR ','
CREATE (n:record { name: nodes.title, id: nodes.temp })

Теперь каждый из этих узлов не совпадает. Любой узел, имеющий пустое значение в столбце temp, должен иметь тип n:franchise:record.

Если бы я хотел сделать это один раз, я знаю, как использовать следующий код:

match (n) where n.name = "a" set n:franchise:record 

Но это будет утомительно делать для каждой из записей, которые имеют пустое значение в temp.

Я предполагаю, что должен быть способ сделать это при чтении данных, но я не совсем уверен.

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете сделать что-то вроде этого:

WITH COLLECT(nodes) AS allnodes
WITH [x IN allnodes WHERE x.temp IS null] AS franchises, [x IN allnodes WHERE x.temp IS NOT null] AS records
UNWIND records AS record
CREATE (n:Record { name: record.title, id: record.temp })
WITH franchise
UNWIND franchises AS franchise
CREATE (n:Franchises:Record { name: record.title})

Я предполагаю, что когда вы говорите "temp пусто", вы имеете в виду nodes.temp IS null. Если ваше определение также включает в себя другие условия, например, пустую строку, то вам необходимо соответствующим образом обновить приведенный выше шифр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...