我的任务是将一些朋友或关注关系导入到一个简单的 Neo4j 图数据库中。我的输入数据是具有以下结构的 csv:
owner,friend,type
Bob,Charlie,friend
Alice,Chris,follower
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,查理是鲍勃的朋友,克里斯是爱丽丝的追随者。我想使用将这些批量导入到 neo4j 中,LOAD CSV但在导入过程中创建条件关系时遇到问题。导入代码类似于:
LOAD CSV WITH HEADERS FROM "file:./graph.csv" AS csvLine
WITH csvLine.owner AS owner,
csvLine.friend AS friend,
csvLine.type AS Type
MERGE (o:Person { name: owner })
MERGE (c:Person { name: friend })
MERGE (u)<-[:IS_FRIEND {type: Type}]-(c);
Run Code Online (Sandbox Code Playgroud)
我宁愿有两种类型的关系IS_FRIEND和FOLLOWS。但是当我尝试像这样的条件语句时:
CASE WHEN Type == "friend" THEN MERGE (u)<-[:IS_FRIEND]-(c) ELSE (u)<-[:FOLLOWS]-(c);
Run Code Online (Sandbox Code Playgroud)
我收到有关使用的语法错误 CASE
有没有办法在像这样从 csv 批量导入期间建立条件关系?
奇怪的是,这个问题没有得到答复。你可以看看https://markhneedham.com/blog/2014/06/17/neo4j-load-csv-handling-conditionals/
// cards
FOREACH(n IN (CASE WHEN csvLine.type IN ["yellow", "red", "yellowred"] THEN [1] else [] END) |
FOREACH(t IN CASE WHEN team = home THEN [home] ELSE [away] END |
MERGE (stats)-[:RECEIVED_CARD]->(card {time: csvLine.time, type: csvLine.type})
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |