专栏首页分母为零Neo4j之导入数据

Neo4j之导入数据

neo4j数据导入

  • load csv
  • admin-import 或 neo4j-import

load csv

  • 适用场景:0 ~ 1000w
  • 速度:一般 5000/s
  • 优点:可以加载本地/远程CSV;可实时插入
  • 缺点:导入速度较慢;需要将数据转换成csv

示例

node.csv

b6b0ea842890425588d4d3cfb38139a9,"文烁"5099c4f943d94fa1873165e3f6f3c2fb,"齐贺喜"c83ed0ae9fb34baa956a42ecf99c8f6e,"李雄"e62d1142937f4de994854fa1b3f0670a,"房玄龄"

脚本

using periodic commit 10000 load csv from "file:/node.csv" as line create (:test {id:line[0], name:line[1]})

node.csv

uuid,name,Labelb6b0ea842890425588d4d3cfb38139a9,"文烁",Label15099c4f943d94fa1873165e3f6f3c2fb,"齐贺喜",Label3c83ed0ae9fb34baa956a42ecf99c8f6e,"李雄",Label2e62d1142937f4de994854fa1b3f0670a,"房玄龄",Label

脚本

using periodic commit 10000 load csv with headers from "file:/neo4j/node.csv" as line with line create (:Test {uuid:line.uuid, name:line.name});

admin-import 或 neo4j-import

  • 适用场景:千万以上 nodes
  • 速度:非常快 (xw/s)
  • 优点:官方出品,占用更少的资源
  • 缺点:需要转成CSV;必须停止neo4j;只能生成新的数据库,而不能在已存在的数据库中插入数据。

admin-import 基本语法

neo4j-admin import [--mode=csv] [--database=<name>]                          [--additional-config=<config-file-path>]                          [--report-file=<filename>]                          [--nodes[:Label1:Label2]=<"file1,file2,...">]                          [--relationships[:RELATIONSHIP_TYPE]=<"file1,file2,...">]                          [--id-type=<STRING|INTEGER|ACTUAL>]                          [--input-encoding=<character-set>]                          [--ignore-extra-columns[=<true|false>]]                          [--ignore-duplicate-nodes[=<true|false>]]                          [--ignore-missing-nodes[=<true|false>]]                          [--multiline-fields[=<true|false>]]                          [--delimiter=<delimiter-character>]                          [--array-delimiter=<array-delimiter-character>]                          [--quote=<quotation-character>]                          [--max-memory=<max-memory-that-importer-can-use>]                          [--f=<File containing all arguments to this import>]                          [--high-io=<true/false>]
  • --ignore-extra-columns=true 忽略多余列参数
  • --ignore-missing-nodes=true 忽略失去节点参数
  • --ignore-duplicate-nodes=true 忽略重复节点参数

导入数据示例:

示例一

三个csv

movies.csv

movie:ID,name,:LABELtt0133093,The Matrix,moviett0234215,The Matrix Reloaded,moviett0242653,The Matrix Revolutions,movie

actors.csv

person:ID,name,:LABELkeanu,Keanu Reeves,personlaurence,Laurence Fishburne,personcarrieanne,Carrie-Anne Moss,person

roles.csv

:START_ID,role,:END_IDkeanu,Neo,tt0133093keanu,Neo,tt0234215keanu,Neo,tt0242653laurence,Morpheus,tt0133093laurence,Morpheus,tt0234215laurence,Morpheus,tt0242653carrieanne,Trinity,tt0133093

neo4j-import 导入

.\bin\neo4j-import --into data\databases\graph.db --nodes .\import\practice\actors.csv --nodes .\import\practice\movies.csv --relationships:ACTED_IN .\import\practice\roles.csv --skip-duplicate-nodes=true --skip-bad-relationships=true --stacktrace --bad-tolerance=500000

neo4j-admin 导入

.\bin\neo4j-admin import --database=graph.db --nodes .\import\practice\actors.csv --nodes .\import\practice\movies.csv --relationships:ACTED_IN .\import\practice\roles.csv

示例二

movies3-header.csv

movieId:ID,title,year:int,:LABEL

movies3.csv

tt0133093,"The Matrix",1999,Moviett0234215,"The Matrix Reloaded",2003,Movie;Sequeltt0242653,"The Matrix Revolutions",2003,Movie;Sequel

actors3-header.csv

personId:ID,name,:LABEL

actors3.csv

keanu,"Keanu Reeves",Actorlaurence,"Laurence Fishburne",Actorcarrieanne,"Carrie-Anne Moss",Actor

roles3-header.csv

:START_ID,role,:END_ID,:TYPE

roles3.csv

keanu,"Neo",tt0133093,ACTED_INkeanu,"Neo",tt0234215,ACTED_INkeanu,"Neo",tt0242653,ACTED_INlaurence,"Morpheus",tt0133093,ACTED_INlaurence,"Morpheus",tt0234215,ACTED_INlaurence,"Morpheus",tt0242653,ACTED_INcarrieanne,"Trinity",tt0133093,ACTED_INcarrieanne,"Trinity",tt0234215,ACTED_INcarrieanne,"Trinity",tt0242653,ACTED_IN

导入脚本

neo4j_home$ bin/neo4j-admin import --nodes="import/movies3-header.csv,import/movies3.csv" --nodes="import/actors3-header.csv,import/actors3.csv" --relationships="import/roles3-header.csv,import/roles3.csv"

示例三

neo4j-admin import --mode=csv --database=userMovie.db --nodes data_test\movies.csv --nodes data_test\actors.csv --relationships data_test\roles.csvbin/neo4j-admin import --nodes:Movie import/movie_node.csv --relationships:ACTED_IN=import/roles5b.csv

注意:

注意一

连接据方式:建立软连接

move graph.db graph_copy.dbmklink /D graph.db userMovie.db windowsln -s graph.db userMovie.db

注意二

通过neo4j-admin方式导入的话,需要暂停服务,并且需要清除graph.db,这样才能导入进去数据。而且,只能在初始化数据时,导入一次之后,就不能再次导入。

所以这种方式,可以在初次建库的时候,导入大批量数据,等以后如果还需要导入数据时,可以采用上边的方法。

注意三

所以最好把csv文件放到import目录下,注意,事先,进入$NEO_HOME/conf/neo4j.conf配置文件并取消这一行的注释:

dbms.directories.import=import

开启引入文件

apoc.import.file.enabled=truedbms.security.procedures.unrestricted=apoc.*dbms.security.allow_csv_import_from_file_urls=true

注意四

因为neo4j是utf-8的,而CSV默认保存是ANSI的,需要用记事本另存为成UTF-8的

注意五

在neo4j中,虽然有一个自增的id属性,但是要想使用它还是很麻烦的,尤其是在web管理端

因此在使用CSV创建关系时,需要我们自己指定或添加一个属性来作为“主键”,在创建关系时根据该属性来获取节点,并添加关系

参考:

https://neo4j.com/docs/operations-manual/current/tutorial/import-tool/

http://weikeqin.cn/2017/04/14/neo4j-import-data/

https://blog.csdn.net/superman_xxx/article/details/83589953

http://weikeqin.cn/categories/Neo4j/page/2/

https://blog.csdn.net/wenxuechaozhe/article/details/80548835

https://blog.csdn.net/linsea/article/details/83463213

https://blog.csdn.net/huangzhijie3918/article/details/72732816

本文分享自微信公众号 - 分母为零(gmg1014),作者:gmg

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Springboot集成logback将错误日志同步到数据库

    在scrip下找到自己数据库所需的sql文件即可,连接为:https://github.com/qos-ch/logback/blob/master/logba...

    分母为零
  • 什么是人工智能?

    人工智能(英语:Artificial Intelligence,缩写为AI,指由人制造出来的机器所表现出来的智能。通常人工智能是指通过普通计算机程序来呈现人类智...

    分母为零
  • k8s基本概念和术语

    Master是集群的控制节点,每个K8s集群里需要有一个Master节点来负责整个集群的管理和控制。基本上k8s的所有控制命令都发给它,它来负责整个具体的执行过...

    分母为零
  • Neo4j·数据导入需要注意的坑·方案对比

    陈黎栋
  • AutoLink开源平台主入口代码分析

    github地址:https://github.com/small99/AutoLink

    苦叶子
  • JPA关联关系表中加其他字段

    JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体[对...

    用户5166330
  • neo4j︱neo4j批量导入neo4j-import (五)

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!! ...

    素质
  • python3 csv文件基本操作

    csv(Comma-Separated Values),也叫逗号分割值,如果你安装了excel,默认会用excel打开csv文件。

    py3study
  • python3.x 读取csv遇到的bu

    2、_csv.Error: iterator should return strings, not bytes (did you open the file i...

    py3study
  • 大神是这样处理 CSV 数据的

    例如:假设你在一 个名叫 stocks.csv 文件中有一些股票市场数据,像这样:

    Python知识大全

扫码关注云+社区

领取腾讯云代金券