Neo4j Cypher - 使用LOAD CSV创建节点和设置标签 [英] Neo4j Cypher - creating nodes and setting labels with LOAD CSV
问题描述
我尝试使用LOAD CSV创建节点,并将标签设置为CSV中的值。那可能吗?我试着像:
LOAD CSV WITH HEADERS FROM'file:///testfile.csv'AS line
CREATE(x:line.label)
...但我得到一个无效的语法错误。有没有办法做到这一点?
bicpence,
首先,这是一个很容易做的Java批量导入应用程序,他们不难写。请参见批量插入器示例。您可以使用 opencsv 读取CSV文件。
如果你宁愿坚持使用Cypher,如果你有一组有限的标签,那么你可以这样做:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM'file:///testfile.csv'AS LINE
CREATE(n:load {lab:line.label,prop:line.prop });
CREATE INDEX ON:load(lab);
MATCH(n:load {lab:'label1'})
SET n:label1
REMOVE n:load
REMOVE n.lab;
MATCH(n:load {lab:'label2'})
SET n:label2
REMOVE n:load
REMOVE n.lab;
恩典与和平,
/ p>
I’m trying to use LOAD CSV to create nodes with the labels being set to values from the CSV. Is that possible? I’m trying something like:
LOAD CSV WITH HEADERS FROM 'file:///testfile.csv' AS line
CREATE (x:line.label)
...but I get an invalid syntax error. Is there any way to do this?
bicpence,
First off, this is pretty easy to do with a Java batch import application, and they aren't hard to write. See this batch inserter example. You can use opencsv to read your CSV file.
If you would rather stick with Cypher, and if you have a finite set of labels to work with, then you could do something like this:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///testfile.csv' AS LINE
CREATE (n:load {lab:line.label, prop:line.prop});
CREATE INDEX ON :load(lab);
MATCH (n:load {lab:'label1'})
SET n:label1
REMOVE n:load
REMOVE n.lab;
MATCH (n:load {lab:'label2'})
SET n:label2
REMOVE n:load
REMOVE n.lab;
Grace and peace,
Jim
这篇关于Neo4j Cypher - 使用LOAD CSV创建节点和设置标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!