我有一个关于如何在Neo4j中添加元素到已经存在的图形中的问题。
首先,我使用以下查询创建了节点和关系:
CALL apoc.import.csv(
[{fileName: "file:///accounts.csv", labels:["Account"]}],
[{fileName: "file:///transactions.csv", type:"transaction"}],
{ignoreDuplicateNodes: true}
)
其中accounts.csv
和transactions.csv
的内容如下:
accounts.csv
acct_id:ID
"3240"
"6399"
"4771"
"2066"
transactions.csv
id,from_acct:START_ID,to_acct:END_ID,timestamp
221214,6399,3240,2022-12-15
221223,4771,3240,2022-12-23
221229,2066,3240,2022-12-29
到目前为止,我已经能够创建图形没有任何问题。
接下来,我尝试从add.csv
读取数据,每次读取一行,并将节点和关系添加到由上述查询创建的图中,但失败了。add.csv
的内容如下:
add.csv
id,from_acct:START_ID,to_acct:END_ID,timestamp
221243,1000,3240,2023-1-1
221247,3000,3241,2023-1-2
对于add.csv
数据,我只想创建尚不存在的节点。所有的关系都应该建立。
换句话说,在第一行中,具有acct_id:3240
的节点已经存在,所以我想只将具有acct_id:1000
的节点添加到图中,并与具有acct_id:3240
的节点创建关系。在第二行中,带有acct_id:3000
的节点和带有acct_id:3241
的节点都不存在,所以我想将它们都添加为新节点并与它们创建关系。
1条答案
按热度按时间mgdq6dx11#
It seems讨论了避免创建现有节点副本的能力,但没有为
apoc.import.csv
实现,因为这会减慢过程。该过程实际上是用于加载新数据库的。作为替代方案,您可以只使用LOAD CSV和MERGE进行导入。
MERGE
在此查询中仅用于创建尚不存在的节点:注意:您可以通过在
:Account(id)
上创建index或uniqueness constraint来加快查询速度。此外,您可能应该从数据文件中删除第一行(标题),因为上面的查询假设它不存在。