【发布时间】:2017-10-14 05:37:30
【问题描述】:
我是 neo4j 的新手,我正在尝试从两个 csv 文件导入数据,但我做不到。 这两个 csv 文件的结构如下:
master.csv:
ID NAME LASTNAME COLLEGE
01 aaa bbb ABC
02 xxx yyy BCE
award.csv:
playerID award year
01 best_player 2010
01 rookie_of_the_year 2011
02 best_player 2012
如何为玩家和奖励创建节点以及如何连接它们?
我尝试使用此代码:(但显然它不起作用)
CREATE CONSTRAINT ON (a:PLAYER) ASSERT a.id IS UNIQUE;
CREATE CONSTRAINT ON (b:AWARD) ASSERT b.award IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "File:///master.csv" as line fieldterminator ';'
CREATE (:PLAYER {id:line.playerID, name:line.firstName, lastName:line.lastName});
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "File:///award.csv" as line fieldterminator ';'
MATCH (player:Player {id:line.playerID})
MERGE (award:AWARD {award:line.award})
CREATE (player)-[r:won]->(award)
set r += {year:line.year}
如果我还要为大学添加节点,对吗?
CREATE CONSTRAINT ON (c:COLLEGE) ASSERT c.name IS UNIQUE;
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///master.csv" as line fieldterminator ';'
WITH line
MATCH (player:PLAYER {id:line.playerID})
MERGE (college:COLLEGE {name:line.college}})
CREATE (player)-[:studied]->(college)
谢谢
【问题讨论】:
-
* ...比赛(玩家:球员)...
-
一切看起来都很好,问题可能是您尝试在单个事务中运行它...您必须在单独的事务中创建每个约束,然后分别运行第一个 LOAD CSV 和第二个跨度>
-
是的,我分别运行每个查询。可能是 csv 文件的问题?