WHYBIGDATA
WHYBIGDATA的博客

批量数据导入Neo4j的方式


在这里插入图片描述


1、写在前面

  • Linux版本:Ubuntu Kylin 16.04
  • Neo4j版本:Neo4j-3.2.7

2、前置芝士

最常见的数据格式之一是平面文件上的行和列。这种电子表格格式被用于各种关系型数据库的导入和导出,所以用这种方式检索现有数据是很容易的。很明显,CSV格式就是这种类型。

Cypher中的LOAD CSV命令允许我们指定一个文件路径、是否有头文件、不同的值定界符,以及Cypher语句,以便我们在图形中对这些表格数据进行建模。

进入Neo4j安装目录,并且进入到conf目录中,查看neo4j.conf配置文件

zhangsan@node01:~$ cd /usr/local/neo4j-3.5.12/conf/
zhangsan@node01:/usr/local/neo4j-3.5.12/conf$ ll
总用量 24
drwxr-xr-x  2 lbj lbj  4096 11月 24 06:38 ./
drwxr-xr-x 12 lbj lbj  4096 11月 24 06:32 ../
-rw-r--r--  1 lbj lbj 15918 10月 18 04:21 neo4j.conf

neo4j.conf配置文件中的dbms.directories.import参数是关于load data的文件路径的设置,默认是在Neo4j安装目录下的
import目录,删除/注释掉dbms.directories.import=import这一行,即可使用自定义路径导入数据到Neo4j

# This setting constrains all `LOAD CSV` import files to be under the `import` directory. Remove or comment it out to
# allow files to be loaded from anywhere in the filesystem; this introduces possible security problems. See the
# `LOAD CSV` section of the manual for details.
dbms.directories.import=import

3、CSV数据导入Neo4j

3.1 LOAD CSV Cypher命令

LOAD CSV Cypher命令:该命令是一个很好的导入数据方式,可以处理中小尺寸的数据集(最多1000万条记录)。可用于任何设置,包括AuraDB。

LOAD CSV可以处理本地远程文件,每一种都有一些相关的语法。

本地文件可以在文件名前使用file:///的前缀来加载。

因为AuraDB是基于云(Cloud)的,所以这种本地文件的方法不能用于AuraDB,只能用于本地安装。

CSV文件不带有header

USING PERIODIC COMMIT 200 LOAD CSV FROM 'file:///tb_books.csv' AS line
merge (b1:books1{id:line[0],type:line[1],name:line[2],author:line[3],price:line[4]})

CSV文件首行是header信息

USING PERIODIC COMMIT 200 LOAD CSV WITH HEADERS FROM 'file:///tb_books.csv' AS line
merge (b1:books1{id:line[0],type:line[1],name:line[2],author:line[3],price:line[4]})

USING PERIODIC COMMIT之后的参数:指定一次导入数据的上限是多少

关于csv格式数据导入的重要说明

  • 所有来自CSV文件的数据都是以字符串形式读取的,所以你需要使用toInteger(), toFloat(), split()或类似函数来转换数值。

  • 标签(label)、属性名称(field)、关系类型(relationship)和变量是区分大小写的。

  • 数据越干净,加载就越容易。尽量在加载前处理复杂的清理/操作。

请记住,Neo4j不存储空值。CSV文件中的空字段可以被跳过,或者在LOAD CSV中用默认值替换。

3.2 neo4j-admin命令

neo4j-admin批量导入工具:命令行工具,可用于直接加载大型数据集。适用于Neo4j桌面、Neo4j EE Docker镜像和本地安装。

../bin/neo4j-admin import --database orders
     --nodes=Customer=customers.csv
     --nodes=products.csv
     --nodes=Order="orders_header.csv,orders1.csv,orders2.csv"
     --relationships=CONTAINS=order_details.csv
     --relationships=ORDERED="customer_orders_header.csv,orders1.csv,orders2.csv"
     --trim-strings=true

3.3 Kettle导入工具

Kettle导入工具:映射和执行数据处理流程的步骤,对于非常大的数据集来说效果很好。适用于任何设置,包括AuraDB。

4、数据导入失败

如果,数据文件的路径没有问题之后,那大概率是文件的格式问题,将文件重新保存为utf-8的格式即可。

利用NotePad++或者Sublime Text即可

5、参考资料

neo4j

posted on 2022-12-09 05:30  WHYBIGDATA  阅读(96)  评论(0编辑  收藏  举报