neo4j导入csv文件

1、我有两个节点,分别是Person和 Moive,有 Person-[:ACTED_IN]->Moive (ACTED_IN是参演关系,表示某个人参演了某个电影),Person-[:DIRECTED]->Moive (DIRECTED表示是执导关系,表示某个人执导了某部电影),Person-[:REVIEWED]->Moive (REVIEWED是编剧关系,表示某个人是某部电影的编剧),Person-[:FOLLOWS]->Person(FOLLOWS是关注关系,表示某个人关注了另一个人)

2、首先导入Node节点的csv文件,首先 csv文件必须要放在 neo4j安装目录的import文件夹下

LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS row
CREATE (n:Person {personId:row.personId ,name: row.name, born: toInteger(row.born)})


LOAD CSV WITH HEADERS FROM 'file:///movie.csv' AS row
CREATE (n:Movie {movieId:row.movieId,title: row.title, votes: toInteger(row.votes),tagline:row.tagline,released:toInteger(row.released)})

我本地的数据路径如下
在这里插入图片描述
3、导入关系文件

//参演
LOAD CSV WITH HEADERS FROM 'file:///r_ACTED_IN_person_2_moive.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Movie {tagline: row.`:END_ID`})
MERGE (p)-[r:ACTED_IN]->(m)
SET r.roles = row.roles

//指导
LOAD CSV WITH HEADERS FROM 'file:///r_DIRECTED_person_2_moive.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Movie {tagline: row.`:END_ID`})
MERGE (p)-[r:DIRECTED]->(m)

//REVIEWED 编剧
LOAD CSV WITH HEADERS FROM 'file:///r_REVIEWED_person_2_movie.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Movie {tagline: row.`:END_ID`})
MERGE (p)-[r:REVIEWED]->(m)
SET r.summary = row.summary ,r.rating = row.rating

//关注
LOAD CSV WITH HEADERS FROM 'file:///r_FOLLOWS_person_2_person.csv' AS row
MATCH (p:Person {name: row.`:START_ID`})
MATCH (m:Person {name: row.`:END_ID`})
MERGE (p)-[r:FOLLOWS]->(m)

3、导入完成后,可以看到如下
在这里插入图片描述
4、如果想导出可以直接执行的csv文件,首先要先写match语句,如下(适合数据量不大的情况)

MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
RETURN 
     p.name AS `:START_ID`, 
     'ACTED_IN' AS `:TYPE`, 
     m.tagline AS `:END_ID`, 
     r.roles AS roles

MATCH (p:Person)-[r:DIRECTED]->(m:Movie)
RETURN 
     p.name AS `:START_ID`, 
     'DIRECTED' AS `:TYPE`, 
     m.tagline AS `:END_ID` 

MATCH (p:Person)-[r:REVIEWED]->(m:Movie)
RETURN 
     p.name AS `:START_ID`, 
     'REVIEWED' AS `:TYPE`, 
     m.tagline AS `:END_ID`,
     r.summary as summary,
     r.rating as rating

MATCH (p:Person)-[r:FOLLOWS]->(m:Person)
RETURN 
     p.name AS `:START_ID`, 
     'FOLLOWS' AS `:TYPE`, 
     m.name AS `:END_ID`
### Neo4j导入 CSV 文件的方法 在 Neo4j 数据库中,可以通过多种方式实现 CSV 文件数据导入。以下是具体方法及其细节: #### 使用 `LOAD CSV` 查询语句 Neo4j 提供了一种内置的查询语法——`LOAD CSV`,用于从外部 CSV 文件加载数据并将其存储到数据库中。此功能支持本地文件以及通过 URL 访问的远程文件。 要使用该功能,需确保 Neo4j 配置允许访问指定路径下的文件。通常情况下,在配置文件 `neo4j.conf` 中启用以下设置即可[^2]: ```properties dbms.security.allow_csv_import_from_file_urls=true ``` 执行如下 Cypher 查询可以完成数据导入: ```cypher LOAD CSV WITH HEADERS FROM 'file:///path_to_your_file.csv' AS row CREATE (p:Person {name: row.name, age: toInteger(row.age)}) RETURN p; ``` 上述代码片段假设存在一个名为 `person.csv` 的文件,并且其列头分别为 `name` 和 `age`。这里需要注意的是,路径中的三个斜杠 (`///`) 表示相对根目录的位置;如果是在 Windows 平台上,则可能需要调整为适合的操作系统格式[^1]。 #### 利用命令行工具批量处理 除了直接编写 Cypher 脚本外,还可以借助 Neo4j 自带的命令行界面来简化流程。启动服务前先进入安装好的 bin 文件夹位置运行 `neo4j console` 启动服务器实例[^3]。之后再利用 shell 工具提交脚本或者交互式输入指令完成复杂场景下的大批量节点创建与边关联工作。 对于初学者而言,建议先熟悉基本概念如图结构模型定义、属性设定等内容后再深入学习高级特性应用部分。 --- ### 示例代码展示 下面给出一段完整的 Python 连接 Neo4j 并调用 `session.run()` 执行自定义 Cypher 语句的例子: ```python from neo4j import GraphDatabase uri = "bolt://localhost:7687" driver = GraphDatabase.driver(uri, auth=("neo4j", "password")) def add_person(tx, name, age): tx.run(""" CREATE (a:Person{name:$nameParam, age:$ageParam}) """, {"nameParam": name, "ageParam": int(age)}) with driver.session() as session: session.write_transaction(add_person, "Alice", 30) driver.close() ``` 以上程序展示了如何建立连接并通过事务机制安全地新增记录至目标数据库表单之中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值