Neo4j导入数据的几种方法

简介: create语句 CREATE (a:Person {name: '张三', sex: '男'}) 如利用create批量写入,这里我使用的是scala+spark,代码如下: object Neo4jConnect { def main(args: Array[String]).

20190114152114385

  1. create语句
CREATE (a:Person {name: '张三', sex: '男'})

如利用create批量写入,这里我使用的是scala+spark,代码如下:

object Neo4jConnect {
  def main(args: Array[String]):Unit = {
    //数据库连接
    val spark=SparkSession.builder().appName("play")
      .master("local[*]")
      .config("spark.neo4j.bolt.url", "bolt://localhost:7687")
      .config("spark.neo4j.bolt.user", "neo4j")
      .config("spark.neo4j.bolt.password", "neo4j")
      .getOrCreate()
    val neo=Neo4j(spark.sparkContext)
    val sql="CREATE (a:Person {name: '张三', sex: '男'}) RETURN a"
    //测试语句
    val rawGraphnode=neo.cypher(sql).loadRowRdd
    rawGraphnode.take(10).foreach(println(_))
    }
  }
}

java也测试过,速度很慢

public class createConn {
       /**
     * 创建节点并增加属性
     */
    public static void createNode(){
        Session session = driver.session();
        session.run( "CREATE (a:Person {name: {name}, title: {title}})",
                parameters( "name", "Arthur001", "title", "King001" ) );

        StatementResult result = session.run( "MATCH (a:Person) WHERE a.name = {name} " +
                        "RETURN a.name AS name, a.title AS title",
                parameters( "name", "Arthur001" ) );
        while ( result.hasNext())
        {
            Record record = result.next();
            System.out.println( record.get( "title" ).asString() + " " + record.get( "name" ).asString() );
        }
        session.close();
        driver.close();
    }
}
  1. load csv 命令导入
USING PERIODIC COMMIT 300 LOAD CSV WITH HEADERS FROM “file:///test.csv” AS line
MERGE (a:actors{name:line.name,type:line.type,id:line.id})

可变参数解释:

1、USING PERIODIC COMMIT 300
使用自动提交,每满300条提交一次,防止内存溢出

2、WITH HEADERS
从文件中读取第一行作为参数名,只有在使用了该参数后,才可以使用line.name这样的表示方式,否则需使用line[0]的表示方式

3、AS line
为每行数据重命名

4、MERGE
用merge比用create好一点,可以防止数据重复

另一种写法

USING PERIODIC COMMIT 10
LOAD CSV FROM "file:///世界.csv" AS line
create (a:世界{personId:line[0],name:line[1],type:line[2]})

actors.csv放入neo4j安装目录下的import文件夹

  1. 建立关系
//现有节点创建关系
MATCH (e:person),(cc:class) WHERE cc.id= e.id CREATE (e)-[r:属于]->(cc)

因为从关系型数据库导入的,这里我通过现有的关联id进行建立关系。

其他几种暂时没有用过,因为现阶段需要实时插入。
持续更新。。。

相关文章
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
1498 0
|
JavaScript 前端开发
JS如何配合input框实现模糊搜索
JS如何配合input框实现模糊搜索
536 2
|
人工智能 自然语言处理 开发者
魔搭社区模型速递(2.16-3.1)
🙋魔搭ModelScope本期社区进展:📟2621个模型,Ovis2系列模型等,📁276个数据集,🎨203个创新应用,📄 12篇技术内容
798 2
|
运维 自然语言处理 算法
云栖实录 | 大模型在大数据智能运维的应用实践
云栖实录 | 大模型在大数据智能运维的应用实践
1358 3
|
前端开发 数据管理 编译器
引领前端未来:React 19的重大更新与实战指南🚀
React 19 即将发布,带来一系列革命性的新功能,旨在简化开发过程并显著提升性能。本文介绍了 React 19 的核心功能,如自动优化重新渲染的 React 编译器、加速初始加载的服务器组件、简化表单处理的 Actions、无缝集成的 Web 组件,以及文档元数据的直接管理。这些新功能通过自动化、优化和增强用户体验,帮助开发者构建更高效的 Web 应用程序。
852 1
引领前端未来:React 19的重大更新与实战指南🚀
|
网络协议 安全 网络虚拟化
openvpn-as的三种安装方式
OpenVPN 是一个开源的VPN软件包,支持多种操作系统,可创建基于SSL/TLS的安全隧道。它分为社区版
2980 2
|
存储 监控 安全
贴片卡的应用场景
贴片卡,通常指的是尺寸小巧、可以直接贴在或嵌入到产品、设备或表面的卡片或芯片,它们集成了电路、存储器、微处理器等电子元件。这些卡片广泛应用于多个行业和领域,以实现数据的存储、传输、认证或控制等功能。以下是贴片卡的一些主要应用场景:
|
关系型数据库 MySQL
MySQL中CASE WHEN用法总结
MySQL中CASE WHEN用法总结
1622 0
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
# 解决输入任何npm命令都报Error: Cannot find module ‘are-we-there-yet‘
|
人工智能 JSON 运维
AI大模型运维开发探索第三篇:深入浅出运维智能体
大模型出现伊始,我们就在SREWorks开源社区征集相关的实验案例。玦离同学提供了面向大数据HDFS集群的智能体案例,非常好地完成了运维诊断的目标。于是基于这一系列的实验和探索。本文详细介绍智能体在运维诊断中的应用探索。

热门文章

最新文章