我创建了一个非常简单的CSV,因此我可以练习将CSV加载到Neo4j中。在Cypher中使用READ CSV时创建关系
的CSV看起来是这样的:
boxer_id name boxer_country total_wins bdate fought fight_id fight_location outcome
1 Glass Joe France 0 1/2/80 2 100 Las Vegas L
2 Bald Bull Turkey 2 2/3/81 1 100 Macao W
3 Soda Popinski Russia 6 3/4/82 4 101 Atlantic City L
4 Sandman USA 9 4/5/83 3 101 Japan W
我要打2个节点,boxer
和fight
。
但我无法将拳击手连接到战斗。
这里的,据我得到:
正如你所看到的,我成功读取的节点,但我不知道如何创建拳击手和他们的拳击比赛之间的关系。
我想要做的事,如:
CREATE (boxer)-[:AGAINST]->(boxer)
但是这没有任何意义。我需要使用字段fought
,该字段封装了谁在环中遇到谁的信息。
任何意见将不胜感激。我不确定如何在READ CSV的环境下执行此操作。
这里是我的代码:
// The goal here is to create a node called Boxer, and pull in properties.
LOAD CSV WITH HEADERS FROM
'file:///test.csv' AS line
WITH line, SPLIT(line.bdate, '/') AS bdate
CREATE (b:boxer {boxer_id: line.boxer_id})
SET b.byear= TOINT(bdate[2]),
b.bmonth= TOINT(bdate[0]),
b.bday = TOINT(bdate[1]),
b.name = line.name,
b.country = line.boxer_country,
b.total_wins = TOINT(line.total_wins)
// Now we make a node called Fight
LOAD CSV WITH HEADERS FROM
'file:///test.csv' AS line
CREATE (f:fight {fight_id: line.fight_id, fight_loc: line.fight_location})
// Now we set relationships
// ????
你能看一看吗?我想也许我必须添加某种唯一性约束?战斗节点出现多次。除此之外:你做的似乎很好! http://imgur.com/szprEfq –
啊是的 - 没有意识到'fight_id's是重复的。更新。 –
这里有一个有趣的问题 - 战斗ID实际上*不是*独特的!查看'fight_ID'列,值为100,100和101,101。设置约束时出现错误。 –