You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用spring-boot-starter-data-neo4j执行LOAD CSV命令?

解决方案:Spring Data Neo4j 执行 LOAD CSV 及原生 Cypher 语句

1. 通过 Spring Data Neo4j 执行 LOAD CSV(原生 Cypher)

完全可以通过 Spring Data Neo4j 执行包含 LOAD CSV 的原生 Cypher 语句,以下是两种常用实现方式:

方式一:在 Repository 中使用 @Query 注解

直接在你的 Neo4jRepository 接口上添加带原生 Cypher 语句的 @Query 注解,示例代码如下:

import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.data.neo4j.repository.query.Query;

public interface EntityRepository extends Neo4jRepository<YourEntity, Long> {

    @Query("""
        LOAD CSV WITH HEADERS FROM 'file:///your-data.csv' AS row
        CREATE (e:Entity {id: row.id, name: row.name})
        """)
    void importDataFromCsv();
}

使用时只需注入该 Repository,调用 importDataFromCsv() 方法即可。注意:CSV 文件需放在 Neo4j 配置的导入目录下(默认是 neo4j/import),也可使用绝对路径或远程 URL。

方式二:通过 Neo4jTemplate 执行动态语句

如果需要灵活构造 Cypher 语句,可注入 Neo4jTemplate 来执行原生查询:

import org.springframework.data.neo4j.core.Neo4jTemplate;
import org.springframework.stereotype.Service;

@Service
public class CsvImportService {

    private final Neo4jTemplate neo4jTemplate;

    public CsvImportService(Neo4jTemplate neo4jTemplate) {
        this.neo4jTemplate = neo4jTemplate;
    }

    public void runCsvImport() {
        String cypher = """
            LOAD CSV WITH HEADERS FROM 'file:///your-data.csv' AS row
            MERGE (e:Entity {id: row.id})
            SET e.name = row.name
            """;
        neo4jTemplate.query(cypher).run();
    }
}

2. 直接用 Java 原生驱动提交 LOAD CSV

若不想依赖 Spring Data,可直接使用 Neo4j Java 驱动执行语句:
Spring Boot 项目中若已引入 spring-boot-starter-data-neo4j,则驱动已包含,无需额外引入;否则需添加依赖:

<dependency>
    <groupId>org.neo4j.driver</groupId>
    <artifactId>neo4j-java-driver</artifactId>
</dependency>

执行代码示例:

import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.neo4j.driver.Session;

public class DirectCsvImporter {

    public static void main(String[] args) {
        String uri = "bolt://localhost:7687";
        String user = "neo4j";
        String password = "your-password";

        try (Driver driver = GraphDatabase.driver(uri, AuthTokens.basic(user, password));
             Session session = driver.session()) {

            String cypher = """
                LOAD CSV WITH HEADERS FROM 'file:///your-data.csv' AS row
                CREATE (e:Entity {id: row.id, name: row.name})
                """;
            session.run(cypher);
            System.out.println("CSV 导入完成");
        }
    }
}

注意事项

  • 确保 Neo4j 配置允许本地文件导入:修改 neo4j.conf 中的 dbms.security.allow_csv_import_from_file_urls=true(生产环境默认可能禁用,按需开启)。
  • 导入大文件时建议添加 USING PERIODIC COMMIT 避免内存溢出,示例:
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///large-data.csv' AS row
CREATE (e:Entity {id: row.id, name: row.name})

内容的提问来源于stack exchange,提问作者Hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:10:41