在neo4j中进行CSV导入时,是否可以根据数据定义关系类型?
此示例中的样本已采集,但已修改:在neo4j中进行CSV导入时,是否可以根据数据定义关系类型?,neo4j,Neo4j,此示例中的样本已采集,但已修改: 由于我试图使用CSV文件中的数据来定义关系类型,所以上面的方法不起作用,这似乎是不允许的。还是因为CSV文件中的数据包含空间?据我所知,这是不可能的。有很多关系类型吗?如果没有,您可以这样做: 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 =
由于我试图使用CSV文件中的数据来定义关系类型,所以上面的方法不起作用,这似乎是不允许的。还是因为CSV文件中的数据包含空间?据我所知,这是不可能的。有很多关系类型吗?如果没有,您可以这样做:
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)
显然,您需要复制/粘贴该位,以获得尽可能多的唯一值。我以前没有尝试过这一点,因此您可能需要在WHERE
之后(可能是之前?)添加,以获取问题的答案
如果链接不起作用,请阅读有关APOC程序的信息。更具体地说,apoc.create.relationship()
这正是我所期望的。我宁愿让关系告诉我它是什么,而不是关系中的财产。谢谢你的回复。是的,当然。要记住的另一件事是neo4j import
命令。这允许您以特定格式定义CSV,还允许您将类型指定为CSV中的一列。唯一的问题是,您可能需要对CSV进行一些转换。
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)
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)})
WITH person, movie, csvLine
CALL apoc.create.relationship(person, csvLine.role, {role: csvLine.role}, movie) YIELD rel
RETURN *