【发布时间】:2015-08-26 11:47:37
【问题描述】:
我有一个包含活动的 csv 文件(流程图):
startActivityId,Name,endActivityId
1,A,2
2,B,3
3,C,4
4,D,5
让它看起来像这样:A->B->C->D 我将 csv 文件成功导入 neo4j 服务器:使用此 Cypher 查询:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:path/graph/activity.csv" AS row
CREATE (:Activity {startactivityId:row.startActivityId, Name: row.Name, endActivityId: row.endActivityId});
然后我在 startactivityId 上创建了一个索引:
CREATE INDEX ON :activity(startActivityId);
然后我想创建这些节点之间的关系,所以尝试了这个密码查询:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:path/graph/activity.csv" AS row
MATCH (startActivity:Activity {startActivityId: row.startActivityId})
MATCH (endActivity:Activity {startActivityId: row.endActivityId})
MERGE (startActivity)-[:LINKS_TO]->(endActivity);`
但没有建立任何关系,什么也没有发生
我确定我错过了一些东西,因为我是 cypher 的新手,但我无法弄清楚。
有什么想法吗?
【问题讨论】:
-
你在你的 csv 和查询中混合了大写/小写,例如
startActivityId在 csv 中但row.startactivityId在查询中,节点属性startactivityId在创建查询中但startActivityId在比赛中。如果你解决它,它会起作用吗? -
不,我在写这个问题时在这里犯了错误,但是在密码中它是正确的,
-
我的查询结构是否正确?
-
这是您的 csv 文件实际的样子,还是只是为了在此处发布而对其进行了对齐?因为如果这就是您的文件的样子,那么您的属性值中将有一堆空格,并且这些空格没有匹配的
startActivityId和endActivityId。MATCH (n:Activity) RETURN n告诉你什么? -
不,我只是为了让这里看起来更易读而对齐,没有空格