我无法在Neo4j中插入大量JSON数据
如果我在Neo4j中插入更多数据,这意味着将花费更多时间来运行它,并使我的性能非常慢,并且我必须等待10-15分钟才能完成整个插入过程。
关于如何插入批量数据,是否有任何解决方案或建议?我在插入JSON数据时使用了合并查询,并且没有唯一值,因此我选择了一些组合来在合并查询中创建对象模型。
dir_port
sym_dev
ini_tiator_group_name
host_lun
sym_metrix_id
(此查询中没有唯一约束来获取对象模型,我们使用了我上面提到的值的组合)
这是我的查询
CALL apoc.load.json('file:<path>')YIELD value AS row
UNWIND row.symdev AS symdevs
MERGE (accesssymdev:symaccess_symdev {
sym_dev:symdevs.sym_dev,
ini_tiator_group_name:symdevs.ini_tiator_group_name,
host_lun:symdevs.host_lun,
symid:symdevs.sym_metrix_id,
dir_port:symdevs.dir_port
})
ON CREATE SET
accesssymdev.attr_percentage = symdevs.attr_percentage,
accesssymdev.cap_mb = toFloat(symdevs.cap_mb),
accesssymdev.physicaldevicename = symdevs.physicaldevicename;
这是我的示例JSON值:
{ "dir_port": "011:000", "attr_percentage": "(m)", "sym_metrix_id": "123456", "sym_dev": "05467", "ini_tiator_group_name": "cluster_abcdefgh_mnop_sss1", "host_lun": "52", "cap(mb)": "246369", " physicaldevicename": "not visible" }, { "dir_port": "001:000", "attr_percentage": "(m)", "sym_metrix_id": "123456", "sym_dev": "03as1", "ini_tiator_group_name": "cluster_abcdefgh_mnop_sss1", "host_lun": "54", "cap(mb)": "210000", " physicaldevicename": "not visible" },
答案 0 :(得分:0)
如果您的MERGE
上没有节点密钥或索引或约束,则更多数据MERGE
将花费更多时间。
对于您而言,最好的方法是创建一个节点密钥:CREATE CONSTRAINT ON (n:symaccess_symdev) ASSERT (n.sym_dev, n.ini_tiator_group_name, n.host_lun, n.symid, n.dir_port) IS NODE KEY