2018-11-19 Neo4j百万级数据导入只能用neo4j-import

在处理大规模数据导入到neo4j时,尤其是涉及到百万级的数据量,使用合适的导入工具和方法至关重要。以下是一些建议和步骤来解决您遇到的问题:

使用neo4j-import工具

对于大规模数据导入,Neo4j官方推荐使用

neo4j-import
工具。这是一个专为大数据导入设计的高效工具,可以一次性导入节点和关系,而不需要通过REST API或Cypher语句逐条插入数据。

步骤:

  1. 准备数据文件

    • 将节点数据和关系数据分别保存为CSV文件。确保CSV文件的格式符合
      neo4j-import
      的要求。
    • 节点CSV文件应包含一个唯一的ID字段,用于后续建立关系。
    • 关系CSV文件应包含起始节点和结束节点的ID。
  2. 使用neo4j-import命令

    • 确保Neo4j数据库为空,因为

      neo4j-import
      只能导入到空数据库。

    • 使用以下命令进行导入:

      neo4j-admin import --nodes=import/nodes1.csv,import/nodes2.csv --relationships=import/relationships.csv

      其中

      import/nodes1.csv
      import/nodes2.csv
      是您的节点文件,
      import/relationships.csv
      是关系文件。

  3. 启动Neo4j数据库

    • 导入完成后,启动Neo4j数据库并检查数据是否正确导入。

注意事项:

  • 文件路径:在Windows下,确保使用正确的文件路径格式,如
    file:///d:/csv/company.csv
  • 内存问题:如果遇到内存不足的问题,可以考虑增加Neo4j的内存配置,或者分批导入数据。
  • Cypher和LOAD CSV:虽然Cypher语句和LOAD CSV方法可以用于小规模数据导入,但对于百万级数据,效率较低且容易导致内存溢出。

示例CSV文件格式:

节点文件(nodes1.csv)

id:ID,name
1,Node1
2,Node2
...

节点文件(nodes2.csv)

id:ID,name
1,NodeA
2,NodeB
...

关系文件(relationships.csv)

:start_id,:end_id,:TYPE
1,1,REL_TYPE
2,2,REL_TYPE
...

通过以上方法,您应该能够高效地将90万和500万的节点以及150万的关系导入到Neo4j数据库中。