Neo4j:CSV导入的关系非常慢

时间:2015-03-19 13:02:01

标签: csv import neo4j graph-databases

我在从CSV文件导入大量关系(2M记录)时遇到了一些问题。

我在Mac OSX(10.9.5)上运行Neo4j 2.1.7,16GB RAM。

该文件具有以下架构:

user_id, shop_id
1,230
1,458
1,783
2,942
2,123

如上所述 - 它包含大约2M条记录(关系)。

以下是我使用浏览器UI运行的查询(我也尝试使用REST调用执行相同操作):

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file://path/to/my/file.csv" AS relation
MATCH (user:User {id: relation.user_id})
MATCH (shop:Shop {id: relation.shop_id})
MERGE (user)-[:LIKES]->(shop)

此查询需要很长时间才能运行,大约需要800秒。我有索引:用户(id)和:商店(id)。创建它们:

CREATE INDEX ON :User(id) 
CREATE INDEX ON :Shop(id)

有关如何提高性能的任何想法?

由于

1 个答案:

答案 0 :(得分:0)

删除shop_id之前的空格

尝试运行:

LOAD CSV WITH HEADERS FROM "file:test.csv" AS r 
return r.user_id, r.shop_id limit 10;

查看它是否正确加载。在原始数据上,r.shop_id为null,因为列名为shop_id

另外,请确保您没有将ID作为数值存储,然后您必须使用toInt(r.shop_id)

尝试在Neo4j Browser(2.2。)或Neo4j-Shell中分析您的陈述。 为此目的删除PERIODIC COMMIT并限制行:

PROFILE
LOAD CSV WITH HEADERS FROM "file://path/to/my/file.csv" AS relation
WITH relation LIMIT 10000
MATCH (user:User {id: relation.user_id})
MATCH (shop:Shop {id: relation.shop_id})
MERGE (user)-[:LIKES]->(shop)