2017-07-18 197 views
1

我需要導入CSV文件並從每條記錄創建一個節點。我正在使用APOC,因爲據推測我可以使用CSV文件中的一列來定義節點創建時的每個節點類型。如何將apoc.load.csv與apoc.create.node一起使用

這不起作用:

CALL apoc.load.csv('FILE:///C:/Temp/Test/Test/Neo4jTest/import/Neo4j_AttributeProvenance.csv',{sep:","}) YIELD map 
CALL apoc.create.node(['map.AttributeName'], {key:['map.NodeID']}) return count(*) 

這是錯誤:

Procedure call inside a query does not support naming results implicitly (name explicitly using `YIELD` instead) (line 2, column 1 (offset: 124)) 
"CALL apoc.create.node(['map.AttributeName'], {key:['map.NodeID']}) return count(*)" 

我也試過這個語法:

CALL apoc.load.csv('FILE:///C:/Temp/Test/Test/Neo4jTest/import/Neo4j_AttributeProvenance.csv',{sep:","}) YIELD map 
CALL apoc.create.node(map.AttributeName, {key:map.NodeID}) return count(*) 

回答

1

你忘了YIELD node後調用apoc.create.node程序。試試這個:

CALL apoc.load.csv('FILE:///C:/Temp/Test/Test/Neo4jTest/import/Neo4j_AttributeProvenance.csv',{sep:","}) YIELD map 
CALL apoc.create.node(['map.AttributeName'], {key:['map.NodeID']}) YIELD node 
return count(*) 
+0

這有幫助。我現在收到一個數據錯誤,所以我不認爲這個查詢正在做我認爲應該做的事情。我如何獲得它來處理CSV中的每一行並從該行創建一個節點? – nicomp

+0

你好@nicomp。回答這個問題最好是知道你的數據集是怎樣的。請注意,您可能在評論中提出了一個新問題。我建議你提出一個新的問題,顯示你的數據集樣本。謝謝! –

+0

https://stackoverflow.com/questions/45173312/how-doi-i-fix-this-neo4j-apoc-query-that-c​​reates-nodes-froma-csv-file – nicomp

1

你可以嘗試這樣的:

CALL apoc.load.csv('FILE:///C:/Temp/Test/Test/Neo4jTest/import/Neo4j_AttributeProvenance.csv',{sep:","}) YIELD map 
CALL apoc.create.node(['map.AttributeName'], {key:['map.NodeID']}) YIELD node 
RETURN count(*) 

我只是添加了創建節點上YIELD東西。

乾杯

+0

這有幫助。我現在收到一個數據錯誤,所以我不認爲這個查詢正在做我認爲應該做的事情。我如何獲得它來處理CSV中的每一行並從該行創建一個節點? – nicomp

相關問題