我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

neo4j图数据库,一般需要配置一个十分强大的apoc插件,可以为neo4j增加非常多的实用功能。在本文中,将会来探讨apoc插件导出csv数据的可能性,这些导出的csv数据经过微调,又可以作为neo4j-admin import的输入项目。这些就是本文要探讨的主要内容。

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - apoc-csv-export
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,这里记录苏南大叔和计算机代码的故事。本文试图通过apoc插件导出csv数据,同时在通过neo4j-admin import导入这些数据。本文测试环境:win10neo4j社区版@4.4.3apoc@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/目录下面。

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - import目录
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-2)

导出一个大文件

下面的代码可以导出一个csv文件,是neo4j数据库内的所有数据,包括结点和关系等。
数据都堆在一个数据表里面,基本上没有啥实际的价值,因为把所有的数据都堆一起了,字段堆在一起,数据也是。结点和关系都混到了一起。实在想不出,这种结构有啥使用价值。

CALL apoc.export.csv.all(
   'a.csv',  
   { 
     quotes:'none',
     useTypes:true
   }
)

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - 第一种方式
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-3)

导出多个文件

这个代码就比较强大了,主要的参数就是bulkImport:true,设置它之后,导出的数据,就按照nodesrelationships分开了。

  • nodes根据标签的不同,分为多个文件。
  • relationships按照类型不同,分为多个文件。
CALL apoc.export.csv.all(
  "a.csv",
   { 
    quotes:'none',
    useTypes:true,
    bulkImport:true
   }
)

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - 第二种方式
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-4)

输入输出对比

在导入的时候,苏南大叔的输入是两个文件,分别是:nodes.csvrelationships.csv。参考链接:

现在同样的数据导出后,变成了N个文件。nodes(*).csvrelationship(*).csv

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - 第二种方式2
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-5)

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

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - 节点对比图
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-6)

如果把这些分开的nodes(*).csvrelationships(*).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

苏南大叔:neo4j图数据库,如何利用apoc插件导出csv兼容数据? - 关系对比图
neo4j图数据库,如何利用apoc插件导出csv兼容数据?(图7-7)

参考文献

综述

通过csv文件为媒介,就打开了neo4j和其它程序进行数据交换的门槛。更多neo4j的经验文章,请点击苏南大叔的博客文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   neo4j    apoc