您的位置:

Neo4j导入CSV文件完全指南

Neo4j数据库是一种基于图的数据库,它是用Java编写的。Neo4j以Node和Relationship的形式存储数据,并使用Cypher查询语言执行查询操作。但是,要将数据导入Neo4j中,我们需要使用CSV(Comma Separated Values)文件格式。

一、Neo4j导入CSV文件乱码

在将CSV文件导入Neo4j之前,必须要确保CSV文件的编码格式与Neo4j数据库的编码格式相同。如果这两者不相同,则可能会出现乱码。

为了解决这个问题,我们需要进行以下两个步骤:

第一步,我们需要检查Neo4j数据库的编码格式。

// 查看Neo4j数据库编码格式
call dbms show currentdatabase

第二步,我们需要将CSV文件的编码格式转换为Neo4j数据库的编码格式。

// 将CSV文件的编码格式转换为Neo4j数据库的编码格式
iconv -f <原编码格式> -t <目标编码格式> <原文件名> > <新文件名>

二、Neo4j导入CSV文件import

Neo4j数据库提供了一个名为LOAD CSV的工具来导入CSV文件。目前,Neo4j支持两种方式将CSV文件导入数据库中:

  • 使用LOAD CSV命令从文件导入
  • 使用neo4j-admin import命令从文件夹导入

以下是使用LOAD CSV命令从文件导入的代码示例:

// 从文件导入CSV
LOAD CSV WITH HEADERS FROM "file:///path/to/file.csv" AS row
CREATE (:Person {name: row.name, age: toInteger(row.age)})

以下是使用neo4j-admin import命令从文件夹导入的代码示例:

// 从文件夹导入CSV
bin/neo4j-admin import --nodes=/path/to/nodes.csv \
  --relationships=/path/to/relationships.csv \
  --database=neo4j --multiline-fields=true \
  --ignore-duplicate-nodes=true --id-type=STRING

三、CSV导入Neo4j

为了将CSV文件导入Neo4j,我们需要遵循一些规则。以下是这些规则:

  • CSV文件必须是纯文本文件
  • CSV文件中的每行数据必须是相同的
  • CSV文件中的列必须是逗号分隔的
  • CSV文件不能包含多个表
  • CSV文件中的字段必须是双引号包围的

确保CSV文件符合以上规则后,可以使用LOAD CSV命令将数据导入Neo4j中。以下是一个示例代码:

// 从CSV文件导入数据
LOAD CSV WITH HEADERS FROM "file:///path/to/file.csv" AS row
CREATE (:Person {name: row.name, age: toInteger(row.age)})

四、CSV文件导入到Python

有时,我们需要使用Python将CSV文件导入Neo4j中。以下是使用Python将CSV文件导入Neo4j的示例代码:

// 使用Python导入CSV文件到Neo4j
import csv
from py2neo import Graph, Node

graph = Graph()

with open('/path/to/file.csv') as f:
    reader = csv.DictReader(f)
    for row in reader:
        node = Node('Person', name=row['name'], age=int(row['age']))
        graph.create(node)

在这个示例中,我们使用了Python的csv和py2neo模块。csv模块用于读取CSV文件,py2neo模块用于创建Neo4j节点。