批量数据导入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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人