neo4j -加载csv文件并将行号存储为属性

kxe2p93d  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(81)

我有一个csv文件,其中的行是排序与最重要的条目了。我想将行号存储为属性,以指示重要性。
举例来说:

Name
-----
abc
cde
xyz

我的Cypher看起来像这样:

LOAD CSV WITH HEADERS FROM
'file:///test.csv'  AS line 
WITH line

我想将www.example.com存储line.name为节点名称和一个新属性“rank”,其中存储行号。示例1用于abc,示例2用于cde,示例3用于xyz。
我如何才能做到这一点?

qyuhtwio

qyuhtwio1#

使用行号作为输入不是一个好主意。强烈建议通过添加一个具有rank值的列来更改csv文件。
作为练习,您可以通过使用临时节点来解决此问题:

MERGE (tmp:TEMPNODE) SET tmp.line = 0
WITH tmp
LOAD CSV WITH HEADERS FROM 'file:///data.csv'  AS line 
WITH line
MATCH (tmp:TEMPNODE) SET tmp.line = tmp.line + 1
RETURN line, tmp.line as index

作为替代,尝试使用apoc

CALL apoc.load.csv('url',{sep:";"}) YIELD lineNo, list, map
cgfeq70w

cgfeq70w2#

  • (我尝试了@stdob的方法和一个临时节点-以及它们的变体-没有一个工作:我不断地得到一次又一次返回的索引值.)*

我使用的是Cypher函数linenumber()(仅在LOAD CSV的上下文中可用):documentation

完整示例:(假设您有一个名为“Name”的CSV列)

LOAD CSV WITH HEADERS FROM "file:///C:/test.csv" AS line

CREATE (n :MY_LABEL {Name: line.Name, rank: linenumber()} )

RETURN count(line)

RETURN语句是可选的。
注:如果在Linux上,请将“file:/C:/test. csv”替换为“file:/test.csv”

相关问题