ПОЛУЧЕНИЕ Neo.ClientError.Statement.SemanticError: Невозможно объединить узел, используя нулевое свойство - PullRequest
0 голосов
/ 23 июня 2019

Здравствуйте. Я пытаюсь установить связь между двумя столбцами в моем CSV-файле. Я загружаю CSV-файл, который имеет столбец отношения, и это выглядит так

RELATIONSHIP,AGENTID,CUSTOMERID,TXNID,TIMESTAMP,AMOUNT,CHANNEL
hasrelation,17956,2025,6C13MXSESN,2019-03-01T11:52:08,10,USSD
hasrelation,17957,2026,6C13MXSEVF,2019-03-01T11:52:09,50,BAPP

поэтому я хочу установить связь между AGENTID и CUSTOMERID. код связи

load csv with headers from "file:///test.csv" AS row
MERGE (p1:AGENTID {name: row.AGENTID})
MERGE (p2:CUSTOMERID {name: row.CUSTOMERID})
WITH p1, p2, row
CALL apoc.create.relationship(p1, row.relationship, {}, p2) YIELD rel
RETURN rel;

Это для целей тестирования, но я получаю ошибку ниже Neo.ClientError.Statement.SemanticError: Невозможно объединить узел, используя нулевое значение свойства для имени

Более того, недавно я тоже попробовал это

LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
MATCH (f:AGENTID), (s:CUSTOMERID)
WHERE f.Name = row.AGENTID
AND s.Name = row.CUSTOMERID
CALL apoc.create.relationship(f, row.RELATIONSHIP,{}, s) YIELD rel
RETURN rel

Я не получаю ошибку здесь, но я не получаю результат отношения

На самом деле у меня такое чувство, что я упустил что-то очень глупое. Пожалуйста, помогите мне понять, почему я получаю эту ошибку. и помогите мне решить эту проблему. Спасибо

1 Ответ

1 голос
/ 23 июня 2019

Вы получаете SemanticError для первого запроса, потому что в вашем файле нет значения (null) для CUSTOMERID или AGENTID, и, следовательно, вы пытаетесь MERGE узел на nullзначение.Вам нужно проверить нулевое значение до MERGE и пропустить MERGE для них.См. Ниже.

Не рекомендуется использовать несколько MERGE в одном запросе. В одном запросе рекомендуется только один MERGE.

Предложите разделить ваш запрос на два и использовать второй для создания отношений.

Загрузить AGENTID:

LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
WHERE row.AGENTID IS NOT NULL
MERGE (p1:AGENTID {name: row.AGENTID});

Загрузить CUSTOMERID:

LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
WHERE row.CUSTOMERID IS NOT NULL
MERGE (p2:CUSTOMERID {name: row.CUSTOMERID})

Создать отношения между AGENTID и CUSTOMERID:

LOAD CSV WITH HEADERS FROM "file:///test.csv" AS row
MATCH (f:AGENTID), (s:CUSTOMERID)
WHERE f.name = row.AGENTID
AND s.name = row.CUSTOMERID
CALL apoc.create.relationship(f, row.RELATIONSHIP,{}, s) YIELD rel
RETURN rel
...