zoukankan      html  css  js  c++  java
  • 学习记录-neo4j通过batch-import导入数据

    使用batch-import导入节点和关系

    参考文档链接:
    英文文档
    中文版
    博客

    下载batch-import工具

    • batch-import原始项目地址:https://github.com/jexp/batch-import

      在导入.gz压缩文件时,会出现关系无法导入的情况,所以如果要使用.gz压缩包进行导入,请使用下面这个版本:

    • 某大神修改后的版本:https://github.com/mo9527/batch-import <-- 我下的这个

    • batch-import工具的使用需要java环境( jdk:7以上)

    • batch-import工具目录结构如下图:
      在这里插入图片描述
      将要导入的csv文件和.gz压缩包放在这个目录下

    CSV文件的一些注意点

    • 只使用了csv文件,未使用.gz压缩包格式
    • 默认csv文件需要使用tab分隔,如果要导入的csv文件是以逗号‘,’分隔,可以在batch.properties 文件中进行配置:batch_import.csv.delim=,
    • 节点文件:
      • 第一行为属性名称
      • 需要有l:label 列才能创建出节点,用于节点标签
      • 如果最初只导入一个文件,则行号对应于节点 id ( 开始为 0 ),id用于创建关系中
      • 可以根据如下的代码配置属性自动索引属性:name:string:users 和配置的索引,如,然后属性 name 将在每个行的users 索引中编制索引
      • 属性字段可以定义类型为 name:type,类型有( int,long,float,double,boolean,byte,short,char,String ),默认类型为String,即只写name时表示为String类型。
      • 如有多个节点文件名用英文逗号','隔开。节点文件与关系文件间用空格' '隔开。
    • 关系文件(两种):
      • 一种用id,当节点文件只有一个时,第一列可以写从节点中这条数据对应的id(从0开始),第二列写到节点对应的id。(多个节点文件未尝试成功)
      • 一种用自动索引属性。例:name:string:users。属性名name将在users索引中为每一行建立一个值为索引。这种写法需在batch.properties 文件中进行配置:batch_import.node_index=exact

    实例:需要导入两类节点a,b及关系a->b。

    解决方法

    • 方法:经过多次尝试,最终将两类节点写在一个节点文件中(因为两类节点标签不同,属性值也不同故合并到一个文件中),共两列(一列l:label,一列属性名)
      nodes.csv
      l:label nm
      a 123
      b 一二三
      也可以将两个节点的属性分开写,只会更改节点中的属性名,不会有其他影响
      l:label aname bname
      a 123
      b 一二三
      然后在关系文件中将其用id表示,例:第一列(a,123)用0表示,第二列的(b,一二三)用1表示,以此类推。
      rels.csv
      必须第一列为从节点,第二列为到节点
      from to type
      0 1 user
      csv文件中对应的索引id可以用python处理。
      batch-import工具目录下(import.bat所在目录)执行命令:import.bat graph.db nodes.csv rels.csv就会在该目录下生成graph.db文件,(关闭neo4j服务器)将该文件移到 neo4jdatadatabases下,(启动neo4j服务) 浏览器中打开neo4j页面即可查看数据库中的内容。
    • 注意点
      若在网页中看到节点上无信息或显示的不是想看到的信息可以:
      点击上方节点标签名 -> 点击下方想要显示的消息标题 在这里插入图片描述

    使用配置索引的方法:就像name:string:users

    • 节点文件:
      nodes.csvl:label(必须有这列才能创建节点),另外两列分别为两类节点的自动索引属性。

      nm:string:users l:label mc:string:deviceId
      123 a
      b 一二三

      这里有个bug:l:label必须在中间列才能成功创建关系 ???

    • 关系文件
      rels.csv:从节点列:nm:string:users,到节点列:mc:string:deviceId,关系列:type,属性列:属性名:属性类型(没有属性可以不写)

      nm:string:users mc:string:deviceId type
      123 一二三 uses
    • 配置文件&执行命令
      先在batch.properties中配置

      	batch_import.node_index.users=exact
      	batch_import.node_index.buyerId=exact
      	batch_import.relationship_index.worked=exact
      

      再在batch-import工具目录下(import.bat所在目录)执行命令:import.bat graph.db nodes.csv rels.csv就会在该目录下生成graph.db文件,(关闭neo4j服务器)将该文件移到 neo4jdatadatabases下,(启动neo4j服务) 浏览器中打开neo4j页面即可查看数据库中的内容。

    • 这个好像有时候有点问题?还没弄清楚,待更

    疑问

    • 如何导入多个节点文件?

    补充

    • 如果需要在已有数据库中添加节点和关系,需要在batch.properties中配置batch_import.keep_db=true,否则将创建一个新的数据库。
  • 相关阅读:
    弹出 提示窗口 背景显示灰色 可移动 模板
    rar文件的格式信息描述(中英文对照)
    android学习笔记48_实现软件国际化,实现文字国际化,和图片国际化
    php 7.2 安装 mcrypt 扩展
    laraveladmin 安装(总结)
    Laravel 精选资源大全
    Laravel 出现 No application encryption key has been specified
    Laravel5.5/6 报错call to undefined function openssl cipher iv length()
    一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单2 狼人:
    一起谈.NET技术,你应该知道的15个Silverlight诀窍 狼人:
  • 原文地址:https://www.cnblogs.com/l999q/p/13395993.html
Copyright © 2011-2022 走看看