Neo4j导入csv文件

Neo4j导入csv文件

前言

Neo4j 数据库可以使用 load csv 命令从 CSV 文件中导入数据。

load csv 命令可以帮助我们导入中小型的数据,理论上大概能处理到一千万条记录。

其中,CSV文件推荐是使用 UTF-8 编码,不然就会造成中文乱码的糟糕情况。

文件访问

Neo4j的配置文件是 conf 文件夹下的 neo4j.conf 文件,里面有一句默认代码:

dbms.directories.import=import

这句代码指定了 Neo4j 中默认访问文件的相对位置,即 <Neo4j_Home> 路径下的 import 文件夹。

我们把准备访问的文件拷贝在 import 文件夹中,然后就可以使用相对路径 file:/// 即可访问 import 下的文件。

例如,我们把文件 test.csv 放入 import 之后,它的绝对路径是 “D:\neo4j-community-3.5.34\import\test.csv” ,我们在命令行中使用相对路径 “file:///test.csv” 即可访问到该文件。

明白了原理,如果我们要把文件的访问位置改成别的文件夹,只需要更改这句代码,去新建对应的文件夹,拷贝文件即可。

//改为Neo4j下的 hhh 文件夹
dbms.directories.import=hhh

这里有一个注意事项,Neo4j数据库考虑了安全性的问题,在使用这句代码指定了文件的访问位置之后,数据库不允许访问该位置之外的其他文件。

常用参数

参数名称用途
using periodic commit [n]批量提交可以设置每满 n 条提交一次,防止内存溢出。
默认值是1000
with headers读取首行读取文件的第一行作为参数名
不使用此参数,要用 line[0]、line[1] 这样的方式表示
使用此参数,可以使用 line.name 这样的表示方式
as line重命名为每行数据重命名
fieldterminator ‘,’自定义字段定界符csv中的分隔符基本都是逗号或分号。
最常用的是逗号,

如果 CSV 文件读取的数据是 String 类型,我们可以使用字符串转换函数对一些有特定要求的数据进行转换。

例如,通过 toInteger() 函数将 String 类型转换为 Integer 类型。

实际书写

我们新建一个 genre.csv 文件,逐项填入以下数据,将其拷贝在 import 文件夹下,然后我们尝试在命令行导入 genre.csv 文件。

gid,gname
12,冒险
14,奇幻
16,动画
18,剧情
27,恐怖
28,动作
35,喜剧
36,历史
37,西部
53,惊悚
80,犯罪
99,纪录
878,科幻
9648,悬疑
10402,音乐
10749,爱情
10751,家庭
10752,战争
10770,电视电影

不使用 with headers 的写法:

load csv
from 'file:///genre.csv' as line
fieldterminator ','
create (
	p:Genre{
    	gid: toInteger(line[0]),
    	gname: line[1]
    }
)

使用 with headers 的写法:

load csv with headers
from 'file:///genre.csv' as line
fieldterminator ','
create (
	p:Genre{
    	gid: toInteger(line.gid),
    	gname: line.gname
    }
)

Neo4j 3.5版本在使用批量提交时遇到一个错误,系统提示要使用 :auto command

SemanticError

因此我在命令前面加入了 :auto,成功通过

:auto using periodic commit 5
load csv with headers
from 'file:///genre.csv' as line
fieldterminator ','
create (
	p:Genre{
    	gid: toInteger(line.gid),
    	gname: line.gname
    }
)

Neo4j数据库中创建成功如下图所示:

success

参考文章

neo4j–Cypher语法练习(LOAD CSV)

Neo4j:入门基础(二)之导入CSV文件

基于电影知识图谱的智能问答系统(二) – Neo4j导入CSV文件

  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
neo4j是一个开源的图形数据库,可以用来存储和查询具有复杂关系的数据。而在导入数据时,neo4j最常见的数据格式之一就是CSV文件导入CSV文件neo4j时,需要执行以下几个步骤: 1. 首先将CSV文件放置在能够被neo4j访问的地方。 2. 然后使用LOAD CSV命令来读取CSV文件并将其转换为neo4j节点和关系。例如: LOAD CSV WITH HEADERS FROM "file:/path/to/myfile.csv" AS row CREATE (:Person { name: row.name, age: toInteger(row.age)}) 这个例子假设CSV文件具有一个标题行,包含“name”和“age”属性,然后将其转换为一个名为“Person”的节点。 3. 接下来,根据实际情况,可以将节点之间的关系用关系标注(relationship types)进行标记,以便后续查询。例如: LOAD CSV WITH HEADERS FROM "file:/path/to/relationships.csv" AS row MATCH (a:Person {name: row.start}) MATCH (b:Person {name: row.end}) MERGE (a)-[:FRIEND]->(b) 这个例子假设relationships.csv具有一个标题行,包含“start”和“end”列,然后将其转换为一个“Friend”关系。 4. 最后可以使用Index或者Constraints等方法进行索引和优化。例如: CREATE INDEX ON :Person(name) 这个例子将针对名为“Person”的节点类型,为其“name”属性创建一个索引。 综上,这就是neo4j导入CSV文件的基本步骤。需要说明的是,这只是导入数据的最基本方式,还有其他高效的方法,可以更好地满足特定需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值