索引与导入
原创大约 2 分钟
创建索引
就像索引在MySQL中所起的作用一样,Neo4j也可以给节点
添加索引。
Neo4j中有两种索引。
普通索引
:使用CREATE INDEX ON :User(name)
创建,给定节
点中的某个属性添加索引。唯一约束
:使用CREATE CONSTRAINT INDEX ON (u:User) ASSERT u.id IS UNIQUE
创建,和MySQL主键的唯一约束作用一样。
当某个属性值是唯一的,就应该使用唯一约束
而不是普通索引
,因为唯一约束
的性能更高。
导入数据
当有大量的数据需要输入到Neo4j里面去的时候,就不能像之前那样去手写一大堆的merge
命令了,而是需要一个批量导入的方式,快速地将数据弄进去。
可以通过两种方式导入数据。
full import:批量导入。
load csv:一次导入一个文件,可以是
csv
或log
类型的文件。
导入数据前需要先将文件上传到${NEO4J_HOME}/import
目录中去,之后导入命令才能正确执行。
然后最好是针对数据的关键字段创建索引后再执行导入。
# 在Web界面中创建索引
> create constraint on (u:User) assert u.uid is unique;
# 在Web界面中导入(前面要加 :auto)
> :auto LOAD CSV FROM 'https://data.neo4j.com/bands/artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN a.name, a.year;

也可以在命令行中执行导入。
> cd /home/work/neo4j-community-5.23.0
> ./bin/cypher-shell -a neo4j://172.16.185.176:7687 -u root -p 12345678
# 进入Cypher查询界面(注意:下面这些语句必须一起执行)
neo4j> LOAD CSV FROM 'https://data.neo4j.com/bands/artists.csv' AS row
MERGE (a:Artist {name: row[1], year: toInteger(row[2])})
RETURN a.name, a.year;

在浏览器中也可以看到导入结果。

感谢支持
更多内容,请移步《超级个体》。