odes F:\neo4j-community-4.4.5\import\actors.csv --nodes F:\neo4j-community-4.4.5\import\movies.csv --relationships F:\neo4j-community-4.4.5\import\roles.csv1
时间: 2025-06-26 18:16:41 浏览: 14
### 导入 CSV 文件以构建 Neo4j 图数据库
为了通过 Cypher Shell 或命令行导入 `actors.csv`、`movies.csv` 和 `roles.csv` 文件并构建图数据库结构,可以按照以下方法操作:
#### 1. 准备工作
确保所有的 CSV 文件都位于 `${NEO4J_HOME}/import` 目录下。如果需要从其他路径加载文件,则需修改 `neo4j.conf` 配置文件,注释掉 `dbms.directories.import=import` 的限制[^2]。
#### 2. 创建节点和关系
以下是具体的 Cypher 查询语句用于导入数据:
##### (a) 导入演员节点 (`actors.csv`)
假设 `actors.csv` 文件的第一列是唯一标识符 `id`,第二列为姓名 `name`:
```cypher
LOAD CSV WITH HEADERS FROM 'file:///actors.csv' AS row
CREATE (:Actor {id: toInteger(row.id), name: row.name})
```
此查询会将每一行的数据转换为一个 `Actor` 节点,并赋予其属性 `id` 和 `name`[^1]。
##### (b) 导入电影节点 (`movies.csv`)
假设 `movies.csv` 文件的第一列是唯一标识符 `movieId`,第二列为电影名称 `title`,第三列为发行年份 `released`:
```cypher
LOAD CSV WITH HEADERS FROM 'file:///movies.csv' AS row
CREATE (:Movie {movieId: toInteger(row.movieId), title: row.title, released: toInteger(row.released)})
```
这一步创建了 `Movie` 类型的节点,并设置了相应的属性。
##### (c) 导入角色关系 (`roles.csv`)
假设 `roles.csv` 文件包含三列:`actorId` 表示演员 ID,`movieId` 表示电影 ID,以及 `role` 列表示角色名:
```cypher
LOAD CSV WITH HEADERS FROM 'file:///roles.csv' AS row
MATCH (a:Actor {id: toInteger(row.actorId)}), (m:Movie {movieId: toInteger(row.movieId)})
CREATE (a)-[:ACTED_IN {role: row.role}]->(m)
```
这段代码首先匹配对应的 `Actor` 和 `Movie` 节点,然后建立两者之间的 `ACTED_IN` 关系,并附加角色信息作为关系属性。
#### 3. 处理重复节点问题
当存在重复的节点时,可以通过参数选项忽略这些冲突。例如,在使用 `neo4j-admin import` 工具时加入 `--ignore-duplicate-nodes=true` 参数即可避免错误发生[^3]。
#### 4. 测试查询
完成上述步骤后,可通过简单的 Cypher 查询验证数据是否成功导入。比如查找特定名字开头的人及其参与过的影片:
```cypher
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
WHERE p.name STARTS WITH 'K'
RETURN p, r, m
```
#### 注意事项
- 如果遇到性能瓶颈或者大数据量场景下的优化需求,请考虑批量处理方式或调整 JVM 堆内存大小等高级设置。
- 对于更复杂的过滤条件可参考样例查询[^5]。
阅读全文
相关推荐

















