[英]Import big csv file partially into Neo4j
一個很大的csv文件(大約7 GB),這是我使用3種不同方法在對象1和對象2的行之間進行成對計算的結果,如下所示:
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)
我猜有多大? 但是遵循這些思路的東西應該可以幫助您入門。 如果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.