我有一个包含以下数据的CSV文件:
ID,Name,Role,Project
1,James,Owner,TST
2,Ed,Assistant,TST
3,Jack,Manager,TST
并希望创建与项目关系指定的人员。我试图这样做:
load csv from 'file:/../x.csv' as line
match (p:Project {code: line[3]})
create (n:Individual {name: line[1]})-[r:line[2]]->(p);
但是barfs用:
无效输入'[':预期标识符字符,空格,'|', 长度规格,属性图或']'(第1行,第159列 (抵消:158))
因为在关系创建中似乎无法取消引用line
。如果我硬编码它的工作原理:
load csv from 'file:/../x.csv' as line
match (p:Project {code: line[3]})
create (n:Individual {name: line[1]})-[r:WORKSFOR]->(p);
那我该怎么做参考?
答案 0 :(得分:2)
现在你不能因为这是结构性信息。
为此使用neo4j-import tool。
或者像您一样手动指定,或使用此解决方法:
load csv with headers from 'file:/../x.csv' as line
match (p:Project {code: line.Project})
create (n:Individual {name: lineName})
foreach (x in case line.Role when "Owner" then [1] else [] end |
create (n)-[r:Owner]->(p)
)
foreach (x in case line.Role when "Assistant" then [1] else [] end |
create (n)-[Assistant]->(p)
)
foreach (x in case line.Role when "Manager" then [1] else [] end |
create (n)-[r:Manager]->(p)
)
答案 1 :(得分:0)
load csv from 'file:/.../x.csv' as line
match (p:Project {code: line[3]})
create (i:Individual {name: line[1]})-[r:Role { type: line[2] }]->(p)
我可以让Neo4j显示关系的type属性而不是标签
答案 2 :(得分:0)
这个问题已经过时了,但Mark Needham发表了一篇文章
使用APOC提供了一个非常简单的solution
如下
public static int scoreWithNumbers(int num1, int num2) {
if (num1 == num2) { // Fixed scores for equal numbers
if (num1 == 1 || num1 == 6) { // equal 1s or 6s
return 10;
} else { // equal others
return 8;
}
} else {
// something something return lowest of num1, num2
}
}
注意:" YIELD rel"是必不可少的,因此对于返回部分