在Cypher中,是否可以使用导入功能根据CSV的值创建节点之间的不同关系。
例如: 对于给定的CSV数据
product_id user_id action
1 1 VIEW
1 2 PURCHASE
我需要创建产品节点(product_id),用户节点(user_id)和基于csv中“action”字段的值在“用户”和“产品”节点之间创建VIEW或PURCHASE关系。
以下是我尝试过的方法。我知道语法不正确,但只是为了让你了解我正在尝试做什么。
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file://pathto/product-event.csv" AS csvLine
FIELDTERMINATOR ','
MERGE ( prod:Product{pid: toInt(csvLine.product_id)} )
MERGE ( usr:User { cid: toInt(csvLine.userid) })
WITH prod,usr , CASE
WHEN csvLine.action ='VIEW' THEN 'VIEW'
WHEN csvLine.action ='PURCHASE' THEN 'PURCHASE'
ELSE 'VIEW' END AS action
MERGE (usr)-[:action]->(prod)
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///pathto/product-event.csv" AS csvLine
FIELDTERMINATOR ','
MERGE ( prod:Product {pid: toInt(csvLine.productid) } )
MERGE ( usr:User { cid: toInt(csvLine.userid) }
)
ON CREATE SET
prod.created=timestamp()
WHERE csvLine.action = 'VIEW'
MERGE (cust)-[:VIEW]->(prod)
WHERE csvLine.action = 'PURCHASE'
MERGE (usr)-[:PURCHASE]->(prod)
可能有一种简单的方法来完成它。但是我在网上没有找到任何参考资料。谢谢。