Частично импортировать большой CSV-файл в Neo4j - PullRequest
0 голосов
/ 13 сентября 2018

Большой CSV-файл (около 7 ГБ), который является моим результатом некоторых попарных вычислений между строками объектов 1 и объектов 2 с использованием 3 различных методов, выглядит следующим образом:

obj 1 , obj 2 , method1 , method2 , method3

obj1 & obj2 - строки, а method1, method2, method3 - значения с плавающей запятой.

Я не хочу импортировать весь CSV-файл в Neo4j, но когда значения method1 превышают определенный порог, я хочу, чтобы эта конкретная строка была импортирована, а между object1 и object2 этой строки был определен край, и то же самое для method2 и method3, я имею в виду, что когда значения method2 превышают определенный порог, я хочу, чтобы эта конкретная строка импортировалась, а между object1 и object2 этой строки определялось ребро. спасибо @cybersam и @Dave Bennett, которые написали мне здесь оригинальные запросы, я немного их изменил и отдельно выполнил 3 следующих запроса. После этого, когда я напишу, например, простой запрос вроде:

   match (n)-[r:similar_on_method2]-(m) return n,r,m 

Я получаю не только требуемое отношение, но и другие отношения, включенные в граф результатов, я не знаю, что не так?!

 Using periodic commit
 LOAD CSV WITH HEADERS
 FROM 'file:///objects.csv'
 AS line
 WITH line
 WHERE toFloat(line.method1) >= $x
 MERGE (obj1:Object {name: line.obj1})
 MERGE (obj2:Object {name: line.obj2})
 MERGE (obj1)-[:similar_on_method1]->(obj2)


 Using periodic commit
 LOAD CSV WITH HEADERS
 FROM 'file:///objects.csv'
 AS line
 WITH line
 WHERE toFloat(line.method2) >= $x
 MERGE (obj1:Object {name: line.obj1})
 MERGE (obj2:Object {name: line.obj2})
 MERGE (obj1)-[:similar_on_method2]->(obj2)


 Using periodic commit
 LOAD CSV WITH HEADERS
 FROM 'file:///objects.csv'
 AS line
 WITH line
 WHERE toFloat(line.method3) >= $x
 MERGE (obj1:Object {name: line.obj1})
 MERGE (obj2:Object {name: line.obj2})
 MERGE (obj1)-[:similar_on_method3]->(obj2)

1 Ответ

0 голосов
/ 13 сентября 2018

Я думаю, насколько большой большой? Но что-то в этом роде должно помочь вам начать. Если значения obj1 и obj2 повторяются в ваших данных или уже существуют в вашей базе данных, вам нужно будет создать некоторые индексы для значений obj1 и obj2.

LOAD CSV WITH HEADERS
FROM 'file:///objects.csv'
AS line
WITH line
WHERE toInteger(line.method1) >= $x
AND toInteger(line.method2) >= $y
AND toInteger(line.method3) >= $z
MERGE (obj1:Object {name: line.obj1})
MERGE (obj2:Object {name: line.obj2})
MERGE (obj1)-[:LINK]->(obj2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...