LOAD CSV FROM 'file:///relationships.tsv' as row
FIELDTERMINATOR '\t'
WITH row
MATCH (a:actor {id: row[2]}), (b:movie {id: row[0]}) MERGE (a)-[r:ACTED_IN]->(b)
看起来像这样的文件:
tt0015637 8 nm0166876 actor \N ["Bull Harding"]
tt2450056 2 nm0000616 actor \N ["Dr. Mc Millan"]
tt1053424 1 nm0000179 actor \N ["Remy"]
tt0062535 1 nm0176061 actor \N ["Ric"]
tt0016908 3 nm0384944 actor \N ["Capt. Blackwell"]
tt0020459 4 nm0176971 actor \N ["Pete"]
tt1300155 1 nm1497548 actor \N ["Moon Blake"]
row [0]是电影的ID。 row [2]是演员的ID
此外,我还希望row [3]仅作为演员。有时候会出现
tt0033839 5 nm0377613 director \N \N
我希望row [3]仅是我尝试过的演员
LOAD CSV FROM 'file:///relationships.tsv' as row
FIELDTERMINATOR '\t'
WITH row
MATCH (a:actor {id: row[2]}), (b:movie {id: row[0]}) MERGE (a)-[r:ACTED_IN]->(b)
WHERE row[3] == 'actor'
但这给了我Neo.ClientError.Statement.SyntaxError:无效的输入'H':预期的'i / I'(第5行,第2列(偏移量:161)) “ WHERE row [3] =='actor'
我添加了所有具有与电影相同的属性名称和ID的演员。
为什么这不起作用?
答案 0 :(得分:2)
确保已在:actor(id)
和:movie(id)
上创建了索引。
并将WHERE
语句放在WITH
语句之后,因此首先您将过滤行,然后执行操作。