开发实践|如何使用图数据库Neo4j

2023-11-29 09:01:28 浏览数 (2)

前言

上一篇已经讲解了如何下载、安装和配置,这一篇着重讲解下在配置完成后,如何启动、连接到web图形话洁面和停止。想要更好的实践来操作图数据库Neo4j,我们需要了解下图数据库neo4j的社区版本和企业版本呢的区别,避免踩坑太久。

社区版本Community Editoion)和企业版本Enterprise Edition)有很大的不同

社区版本(CE)

企业版本(EE)

查询数据库

创建数据库

X

停止数据库

X

启动数据库

X

删除数据库

X

1 使用Neo4j

1.1 管理Neo4j

当我们需要在CE中创建数据库时,我们可以按照下面的步骤来。

  • 停掉服务器

../neo4j_HOME/bin/neo4j stop

  • 修改配置文件neo4j.conf

打开../neo4j_HOME/conf/neo4j.conf配置文件,找到

代码语言:javascript复制
#The name of the default database
 
#dbms.default_database=neo4j

v 4.1.1版本大约在Line 8,然后在下面新增一行代码

代码语言:javascript复制
dbms.active_database=your_DB_name

或者打开默认数据库,修改 dbms.default_database=your_DB_name 再次启动Neo4j,登录即可查看到我们自己想要创建的数据库

备注 :如果想要多个数据库,重复上面的步骤,社区版本每次只能打开一个活动的数据库。

1.2 Cypher查询语言

Cypher查询语言(简称:CQL),就像MySQL,Oracle的查询语言是SQL,Protege的查询语言是GQL,而Neo4j的查询语言则是CQL。

1.3 文档参考指南

官方提供了很详细的操作文档,可以根据官方提供的文档来操作。

Neo4j官方地址说明文档:https://neo4j.com/docs/

Neo4j中文非官方地址中文文档:http://neo4j.com.cn/public/docs/index.html

2 使用LOAD CSV命令导入数据

2.1 本地数据文件存放位置

为了方便使用file:/// 文件名称,这一步也可以省略,但是你要在LOAD命令导入时指定绝对的路径地址

../Neo4j_HOME/import/xxx.csv

备注:如果使用的是Excel存储的数据,例如,MySQL数据库导出的数据,请提前转为.csv文件;如果Excel有多个Sheet,请转为多个.csv文件

2.2 使用LOAD命令导入.csv文件

代码语言:javascript复制
:auto USING PERIODIC COMMIT 300 LOAD CSV WITH HEADERS FROM “file:///users.csv” AS line
 MERGE (u:Users{USER_MD5:line.USER_MD5,USER_NICKNAME:line.USER_NICKNAME})

:auto 自动导入,在V4.1.0版本使用LOAD命令导入时,不增加这个命令会提示报错

USING PERIODIC COMMIT 300 …… AS line 每300行更新一次,并且按照行来导入,为了在 MERGE 自定义导入的列

LOAD CSV 导入文件类型

WITH HEADERS FROM 使用表头匹配来导入,从文件中读取第一行作为参数名,只有在使用了该参数后,才可以使用line.name这样的表示方式,否则需使用line[0]的表示方式

MERGE 执行merge操作,比create好一些,merge会覆盖更新相同数据,create只会增加。

在使用LOAD命令导入.csv文件时,需要注意以下几点:

  1. 文件路径:确保指定的文件路径是正确的,并且文件存在于该路径下。否则,导入操作将失败。我在这里踩过坑,多打了一个 `` s `` 。
  2. 文件格式:确保要导入的.csv文件是正确的格式,包括逗号分隔的值、引号括起来的文本等。如果文件格式不正确,导入操作可能会失败或产生错误的结果。
  3. 数据类型:在导入.csv文件时,需要指定每个列的数据类型。如果某个列的数据类型与实际数据不匹配,可能会导致数据转换错误或数据丢失。
  4. 列名:确保.csv文件中包含列名,并且这些列名与数据库中的表结构相匹配。如果不包含列名或列名与表结构不匹配,导入操作可能会失败或产生错误的结果。
  5. 数据处理:在导入.csv文件时,可能需要处理一些数据问题,例如空值、缺失值、数据转换等。需要根据具体情况进行处理,以确保数据的完整性和准确性。
  6. 导入选项:根据具体的数据库管理系统和需求,可能需要使用不同的导入选项来执行导入操作。这些选项可能包括指定分隔符、引号字符、行结束符等。

如果需要其他诉求,可以参考官方说明书:

https://neo4j.com/docs/operations-manual/4.1/tools/import/

总结: 上面命令执行的具体的含义就是:从.csv文件每300行自动导入提交一个事务。

3 使用客户端命令导入数据

使用浏览器导入MySQL数据库数据

【步骤】

1、首先将目标数据库的驱动导入到插件,参考 安装插件

2、其次使用命令加载驱动 `` CALL apoc.load.driver('com.mysql.jdbc.Driver') ``

3、执行导入操作

【案例】

主机:SrcAccessHostList

代码语言:javascript复制
CALL apoc.load.jdbc(
 'jdbc:mysql://192.168.3.178:3308/db_learn?user=root&password=password&useUnicode=true&characterEncoding=utf8',
 'select * from it_load_test'
 ) YIELD row
 CREATE (n:SrcAccessHostList {id: row.id, host_ip: row.host_ip, host_name: row.host_name, host_type: row.host_type, remark: row.remark, cpu_total: row.cpu_total, memory_total: row.memory_total, storage_total: row.storage_total, machine_location: row.machine_location})

 Added 447 labels, created 447 nodes, set 4023 properties, completed after 449 ms.

在导入大量数据时,需要注意数据的安全性,尽量避免使用不安全的网络连接,如明文传输密码等。同时需要保证数据的完整性。在导入之前,应该先备份原有的数据,以便在导入过程中发生错误时进行恢复。


我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞