在neo4j中进行CSV导入时,是否可以根据数据定义关系类型?

时间:2015-06-01 12:25:26

标签: neo4j

从此示例中获取但已修改样本:http://neo4j.com/docs/2.2.2/cypherdoc-importing-csv-files-with-cypher.html

USING PERIODIC COMMIT 500 LOAD CSV 
WITH HEADERS FROM "http://neo4j.com/docs/2.2.2/csv/import/roles.csv" AS csvLine 
MATCH (person:Person { id: toInt(csvLine.personId)}),(movie:Movie { id: toInt(csvLine.movieId)}) 
CREATE (person)-[:csvLine.role { role: csvLine.role }]->(movie)

以上不起作用,因为我尝试使用CSV文件中的数据来定义关系类型,这似乎不是很受欢迎。或者是因为CSV文件中的数据包含空格?

2 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的。这种关系类型很多吗?如果没有,你可以这样做:

USING PERIODIC COMMIT 500 LOAD CSV 
WITH HEADERS FROM "http://neo4j.com/docs/2.2.2/csv/import/roles.csv" AS csvLine
WHERE csvLine.role = 'VALUE'
MATCH (person:Person { id: toInt(csvLine.personId)}),(movie:Movie { id: toInt(csvLine.movieId)}) 
CREATE (person)-[:VALUE { role: csvLine.role }]->(movie)

显然,您需要复制/粘贴该位以获得与您一样多的唯一值。我之前没有尝试过,因此您可能需要WITH之后(可能之前?)WHERE

答案 1 :(得分:0)

请参阅 this post 以获得问题的答案。

如果链接无效,请阅读 "UserTimestamps" : { "User1" : { "2021" : { "1":{ "30": { "2:10 pm": { "wasTappedBy":{ "User2":true "User3":true } } "2:15 pm": { "wasTappedBy":{ "User5":true "User2":true } }, }, }, }, }, "User2" : { "2021" : { "2":{ "20": { "1:00 pm": { "wasTappedBy":{ "User2":true "User3":true } }, }, }, }, }, } 。更具体地说,("UserTimeStamps").child("UserName").child("YearTapped").child("MonthOfYearTapped").child("DayOfMonthTapped").child("TimeOfDayTapped").child("wasTappedBy").child("userWhoDidTheTapping").child(true)

APOC Procedure