绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Neo4j | Load Csv 实战
2020-05-21 14:13:28

Neo4j提供的Load CSV方法实战

Load CSV可以直接在Cypher命令窗口进行调用,是提供的cypher导入数据方法,类似于SQL的inster\delete\update等语法。

导入数据前先建议创建索引,这会增大导入数据的速度。

创建约束

CREATE CONSTRAINT ON (d:Deal) ASSERT d.dealID IS UNIQUE;
  • 如果创建了索引,则没有办法创建索引
  • 创建约束会默认创建索引
  • 约束和索引的适用场景在于是否允许ID的节点存在,一般对于需要数据性约束的数据如身份证号,可以创建约束,恰好也创建了索引,方便查询。

Load CSV节点

USING PERIODIC COMMIT 1000 LOAD CSV WITH HEADERS FROM "file:///traindata.csv" AS row CREATE (:Deal 
{dealID: row.all_0, 
all_1: toInt(row.all_1),
all_2: toFloat(row.all_2),
label: toString(row.class)});

节点CSV文件:

语法解析:

  • PERIODIC COMMIT 1000:每1000条提交一次,这个参数非常关键,如果在数据量很大的情况下内存无法同时加载很多数据,所以需要频繁的提交事务,这样可以减小任务失败的风险,并且也会增加数据导入的速度,当然这需要一个合适数量的commit。
  • WITH HEADERS:是否使用列名,如果文件中有列明,则可以加这个参数,使用列名的方法就是row.列名,如果要指定列的类型,则增加toInt用于指定类型。
  • 加载CSV文件,文件的位置,需要放在Neo4j文件夹下的import文件夹下。
  • CREATE :也可以用Merge代替,create为创建,如果存在节点且有约束则不创建,如果不存在则创建。

导入成功:

节点导入速度:1101 个/S(加创建索引所消耗的时间,还于节点属性的多少有关系)


Load CSV节点

USING PERIODIC COMMIT 100000 LOAD CSV WITH HEADERS FROM "file:///elliptic_txs_edgelist.csv" AS row 
MATCH (from:Deal{dealID: row.txId1}),(to:Deal{dealID: row.txId2}) MERGE (from)-[f:FLOW]->(to)

关系CSV文件:

语法解析:

  • PERIODIC COMMIT 100000:同上。
  • WITH HEADERS:同上。

导入成功:

关系导入速度:18W/S

参考:

https://neo4j.com/developer/guide-importing-data-and-etl/neo4j.com

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Neo4j 图形数据库
创建时间:2020-05-19 17:48:05
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。 Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注.
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • ?
    专家
戳我,来吐槽~