neo4j图数据库,如何利用apoc插件导出csv兼容数据?
发布于 作者:苏南大叔 来源:程序如此灵动~
neo4j图数据库,一般需要配置一个十分强大的apoc插件,可以为neo4j增加非常多的实用功能。在本文中,将会来探讨apoc插件导出csv数据的可能性,这些导出的csv数据经过微调,又可以作为neo4j-admin import的输入项目。这些就是本文要探讨的主要内容。

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文试图通过apoc插件导出csv数据,同时在通过neo4j-admin import导入这些数据。本文测试环境:win10,neo4j社区版@4.4.3,apoc@4.4.0。
前置内容
本文有两篇前置内容:
第一篇是如何通过neo4j-admin导入csv数据:
另外一篇,是如何安装启用apoc插件:
apoc插件导出数据的文档说明地址:
apoc插件如果想要顺利导入导出数据,需要配置neo4j.conf文件。配置项目如下:
apoc.import.file.use_neo4j_config=true
apoc.export.file.enabled=true
apoc.import.file.enabled=true默认导入导出的文件,存放在<neo4j home>/import/目录下面。

导出一个大文件
下面的代码可以导出一个csv文件,是neo4j数据库内的所有数据,包括结点和关系等。
数据都堆在一个数据表里面,基本上没有啥实际的价值,因为把所有的数据都堆一起了,字段堆在一起,数据也是。结点和关系都混到了一起。实在想不出,这种结构有啥使用价值。
CALL apoc.export.csv.all(
'a.csv',
{
quotes:'none',
useTypes:true
}
)
导出多个文件
这个代码就比较强大了,主要的参数就是bulkImport:true,设置它之后,导出的数据,就按照nodes和relationships分开了。
nodes根据标签的不同,分为多个文件。relationships按照类型不同,分为多个文件。
CALL apoc.export.csv.all(
"a.csv",
{
quotes:'none',
useTypes:true,
bulkImport:true
}
)
输入输出对比
在导入的时候,苏南大叔的输入是两个文件,分别是:nodes.csv和relationships.csv。参考链接:
现在同样的数据导出后,变成了N个文件。nodes(*).csv和relationship(*).csv。

经过文件对比,苏南大叔发现:导出的csv字段名有多余的,必要的字段名有被改名的。虽然整体上来说,数据是差不多合适的。但是,还需要进行细微的调整,才能被再次导入利用。

如果把这些分开的nodes(*).csv和relationships(*).csv,再次导入的话,需要重复设置--nodes和--relationships参数(据文档记载)。例如:
neo4j-admin import --database=neo4j --nodes=import/nodes1.csv --nodes=import/nodes2.csv --relationships=import/relationship1.csv --relationships=import/relationship2.csv --force
参考文献
- https://newsn.net/say/neo4j-import-csv.html
- https://neo4j.com/labs/apoc/4.4/overview/apoc.export/apoc.export.csv.all/
综述
通过csv文件为媒介,就打开了neo4j和其它程序进行数据交换的门槛。更多neo4j的经验文章,请点击苏南大叔的博客文章: