2017-02-08 11 views
1

У меня есть набор узлов, созданных с использованием file_A, который содержит столбец с «идентификатором» каждого узла. Она была создана с помощью этого Cypher запроса (в Java):Neo4j Cypher - добавление свойства с LOAD CSV

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM 'file:file_A' AS line FIELDTERMINATOR '\t' 
CREATE (c:Node {nodeId:line.id}) 

Теперь у меня есть еще один файл (file_B), который содержит четыре столбца: идентификатор, описание, prop2 и prop3. Мне нужно назначить описание (свойство 'nodeDesc') каждому из узлов, созданных ранее. Эти описания будут прочитаны из столбца «описание» file_B. Более того, чтобы присвоить это значение свойству «nodoDesc» узла, «prop2» и «prop3» должны быть равны «1». Для этого я использую этот запрос: Cypher

USING PERIODIC COMMIT 1000 
LOAD CSV WITH HEADERS FROM 'file:file_B' AS line FIELDTERMINATOR '\t' 
MATCH (c:Node) 
WHERE c.nodeId=line.id AND line.prop2='1' AND line.prop3='1' 
SET c.nodeDesc = line.description 

file_B содержит некоторые описания для каждого узла, но только один из них имеет как «prop2» и «prop3» равным «1». И это тот, который я хочу присвоить свойству узла.

Проблема, которую я получаю после выполнения предыдущего запроса, заключается в том, что некоторые узлы не имеют описания. После выполнения нескольких тестов я подтвердил, что он не выполняет MATCH «nodeId» с идентификатором столбца file_B, но в этом столбце это «nodeId», и оба «prop2» и «prop2», prop3 'равны 1'.

. Примечание: file_A имеет 400.000 строк приблиз и file_B имеет 1.300.000 строк приблиз.

Спасибо.

ответ

0

Возможно, вы захотите убедиться, что вы не сравниваете целые числа со строками. Это часто может быть источником несоответствий, подобных этим.

И если оба значения являются строками, то вы можете проверить, не имеет ли одна или другая цепочка (или предшествующие) пробелы.

+0

Здравствуйте, благодарю вас за ответ. Значения - это строка. И нет конечных или предшествующих пробелов. На самом деле, если я вручную удалю все строки файла_B, кроме одного из тех, которые не сопоставлены, тогда он сопоставляется, если я выполняю запрос cypher (второй). – Vicente

+0

Он также совпадает, если я вырезал одну из строк, которые не совпадают и вставлены в первую позицию строк в файле_B. Странное поведение ... – Vicente