2017-07-18 152 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

相关问题