我用数千台设备进口了一张桌子.然后导入另一个包含大约20种类型的设备类型的表.
当我写下面的密码查询来关联它们时,Neo4j警告我有关笛卡儿的产品.有没有更好的方法来创建关联?我应该在CSV导入期间完成吗?
MATCH (te:Equipment_Type),(e:Equipment)
WHERE te.type_id = e.type_id
CREATE (e)-[:TYPE_OF]→(te)
更新
在CSV导入过程中,我尝试了Brian所吮吸的东西,并且像魅力一样工作.
>首先导入设备类型;
>然后在Equipment上创建并索引(type_id);
>修改了在CSV导入期间搜索的代码.
来自Neo4j控制台:
Added 100812 labels, created 100812 nodes, set 414307 properties,
created 100812 relationships, statement executed in 33902 ms.
代码:
CREATE INDEX ON :Equipment(type_id)
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "http://localhost/Equipments.csv" AS row
MERGE (e:Equipment {eqp_id: row.eqp_id, name: row.name, type_id: row.type_id})
WITH e, row
MATCH (te:Equipemnt_Type)
WHERE te.type_id = row.type_id
CREATE (e)-[:TYPE_OF]->(te)
最佳答案 根据您所谈论的数据大小并不是什么大问题,特别是如果您在Equipment_Type上有索引:type_id和Equipment:type_id.它警告你,因为当你第一次在一个小数据集上写入一个查询中的笛卡尔项目时,它看起来很快,然后随着你获得更多数据而快速增长.
但是,在CSV导入期间创建关系可能是接近它的最佳方式.