ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

neo4j数据导入解决方案

2019-11-28 10:00:10  阅读:625  来源: 互联网

标签:LOAD 解决方案 导入 import neo4j line csv


一、neo4j数据导入方法

neo4j数据导入有两种方法,第一种是使用cypher语法中的LOAD CSV,第二种是使用neo4j自带的工具neo4j-admin import。

LOAD CSV

导入的文件必须是csv文件,位置可以是本地的,或通过http、https、ftp等url指定位置。

neo4j中关于导入文件的设置是dbms.security.allow_csv_import_from_file_urls,默认为true;而导入本地文件的位置通过dbms.directories.import来指定导入的根目录,然后再使用file:///来表示绝对路径。

示例一:不带header,用下标来索引

给定artists.csv文件

1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

 输入语句:

LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/3.5/csv/artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})

示例二:带header,用关键字来索引

给定artists-with-headers.csv文件

Id,Name,Year
1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

然后执行cypher语句:

LOAD CSV WITH HEADERS FROM 'https://neo4j.com/docs/cypher-manual/3.5/csv/artists-with-headers.csv' AS line
CREATE (:Artist { name: line.Name, year: toInteger(line.Year)})

示例三:大csv文件分批导入

USING PERIODIC COMMIT
LOAD CSV FROM 'https://neo4j.com/docs/cypher-manual/3.5/csv/artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})

这里默认1000行提交一次,也可以人为指定,比如using periodic commit 500.

额外提示:如果值中包含引号,可以用""来表示".

可以发现使用load csv只能导入结点,如果还想导入关系数据,就只能靠neo4j自带的import工具了。

neo4j-admin import

使用neo4j-admin import工具只能往空数据库中导入数据,且csv文件必须在import目录下。使用csv文件导入数据时,每个结点都必须有一个唯一的ID类属性,但是最好不要起名为ID,这会和数据库本身维护的ID字段冲突。

二、neo4j导入实例

1、本次的数据集为Movielens的数据集,下载地址:
http://grouplens.org/datasets/movielens/

2、在neo4j安装根路径下找到import之后在此文件夹下放入数据。

3、在neo4j中导入数据并创建节点,因数据量过大,使用USING PERIODIC COMMIT 1000,防止数据过大溢出,with headers可以处理含有头文件的数据。

USING PERIODIC COMMIT 1000
load csv with headers from "file:///ratings.csv" as link
with link       
create(:Ratings{userId:link.userId,movieId:link.movieId,rating:link.rating,
timestamp:link.timestamp
})

 速度还是蛮快的!!!

4、创建节点之间的关系

LOAD CSV WITH HEADERS FROM "file:///ratings.csv" AS row
MATCH (m:Movies), (u:Users)
WHERE u.userId = row.userId AND m.movieId = row.movieId
CREATE (u)-[r:rating{value:row.rating}]->(m)

5、如何快速删除Neo4j中数量级较大的数据(该方法是清楚数据库中所有的数据):

1.关闭Neo4j服务器进程:
  命令:neo4j stop

2.删除graph.db数据库文件:
  找到<NEO4J_HOME>/data/databases/路径,可以看到graph.db文件夹。删除此文件夹即可。

3.重新启动Neo4j服务器:
  通过bin目录下执行如下命令启动Neo4j:/neo4j console

导入csv数据时,如何将属性的String类型转换成int类型:

//导入节点 电影类型  == 注意类型转换
LOAD CSV WITH HEADERS  FROM "file:///genre.csv" AS line
MERGE (p:Genre{gid:toInteger(line.gid),name:line.gname})

标签:LOAD,解决方案,导入,import,neo4j,line,csv
来源: https://www.cnblogs.com/chen8023miss/p/11947110.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有