2017-12-18 210 views
2

我試圖創建一個Neo4j的圖形和我的數據是在CSV文件看起來像如何使用CSV文件中的值作爲neo4j中的關係標記?

node1,connection,node2 
PPARA,0.5,PPARGC1A 
PPARA,0.5,ENSG00000236349 
PPARA,0.5,TSPA 

我想connection值,如圖形,我是無法做到的關係標籤使用。以下是我用來創建圖形的確切代碼。

LOAD CSV WITH HEADERS FROM "file:///C:/Users/username/Desktop/Cytoscape-friend.csv" AS network 
CREATE (:GeneRN2{sourceNode:network.node1, destNode:network.node2}) 
CREATE (sourceNode) -[:TO {exp:network.connection}] ->(destNode) 

我的第二個問題是,因爲在我的文件中有多個重複值,默認情況下Neo4j的是爲重複值創建多個節點。如何爲多個值創建單節點並將所有其他相關節點連接到該單節點?

回答

1
  1. 關係沒有labels。他們有一個type
  2. 如果您需要指定變量中關係的類型,則需要使用APOC library中的過程apoc.create.relationship
  3. 爲避免創建重複節點,請使用MERGE而不是CREATE

所以您的查詢可能是這樣的:

LOAD CSV WITH HEADERS 
     FROM "file:///C:/Users/username/Desktop/Cytoscape-friend.csv" 
     AS network 
MERGE (sourceNode {id:network.node1}) 
MERGE (destNode {id:network.node2}) 
WITH sourceNode, 
    destNode, 
    network 
CALL apoc.create.relationship(sourceNode, network.connection, {}, destNode) yield rel 
RETURN sourceNode, 
     rel, 
     destNode