批量数据导入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、参考资料
本文来自博客园,作者:{WHYBIGDATA},转载请注明原文链接:https://www.cnblogs.com/shadowlim/p/17051732.html