簡體   English   中英

將大的csv文件部分導入Neo4j

[英]Import big csv file partially into Neo4j

一個很大的csv文件(大約7 GB),這是我使用3種不同方法在對象1和對象2的行之間進行成對計算的結果,如下所示:

obj 1 , obj 2 , method1 , method2 , method3

obj1obj2是字符串,而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)

我猜有多大? 但是遵循這些思路的東西應該可以幫助您入門。 如果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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM