![精通Neo4j](https://wfqqreader-1252317822.image.myqcloud.com/cover/113/47216113/b_47216113.jpg)
2.5.4 使用neo4j-import工具导入到Neo4j
从Neo4j 2.2版本开始,系统就自带了一个大数据量的导入工具—neo4j-import,可支持并行、可扩展的大规模CSV数据导入。下面介绍如何使用这个工具导入CSV数据。
首先,可以在Neo4j系统目录下的path/to/neo4j/bin/neo4j-import路径下找到这个工具的可执行文件。以下是该工具的使用示例:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P103_101393.jpg?sign=1738954365-36xGMDXUQlNFAzNzdMqyzcVmS4hoLAKP-0-7d9b68e5b5072138c4133869a72b5518)
上例中以“--nodes:”子句开头的CSV文件是节点CSV文件;以“--relationships:”开头的是关系CSV文件;“--into”子句指明了导入的Neo4j数据库名称;“--id-type”子句指明了生成节点、关系的主键类型为string类型。
由于不能在neo4j-import工具中使用Cypher语句创建节点、关系,所以需要为节点和关系分别提供不同的CSV文件。上例中各个文件的列的组织形式如表2-3~表2-7所示。
表2-3 customers.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101394.jpg?sign=1738954365-t7n4ZspMyqQO1MOHO2ketysCnsTB95DF-0-3c1971d9849a153b83c29a01a4c7f776)
表2-4 products.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101395.jpg?sign=1738954365-MS4CKK728dOitSuIy3iU1ZexMDVowPOf-0-8144f95bb5285ef3ccae528e52018e47)
表2-5 orders_header.csv,orders1.csv,orders2.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101396.jpg?sign=1738954365-dn5FhlbEzvGPqCu1EyhhrFZSDshvMptj-0-f97f92f2fea24589aae19b0b8d91e7ff)
表2-6 order_details.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101397.jpg?sign=1738954365-8yB4eSnEhfSYRWS0NJN06rNhJcqO9BPr-0-f61b19ca8677acba85aa12882cb73466)
表2-7 customer_orders_header.csv,orders1.csv,orders2.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101398.jpg?sign=1738954365-MVwgT58s5qcNSkzuvImOfbGGMsc71Erz-0-646ebb0deb49471ce3c7d48bb141091a)
对于上面各个CSV文件的内容解析如下:
(1)customers.csv中的全部记录将作为节点直接导入到Neo4j数据库中,其中节点都带有Customer标签节点属性,直接从CSV文件的每条记录中获取。
(2)products.csv文件导入形式与customers.csv相同,但其中节点标签取自:LABEL列。
(3)对于节点的顺序取自3个文件(orders_header.csv、orders1.csv、orders2.csv),orders_header.csv为头文件,orders1.csv和orders2.csv为内容文件。
(4)接下来需要创建订单项(orders1.csv、orders2.csv)与所包含的产品(products.csv)相关联关系“CONTAINS”,这个关联关系将从order_details.csv创建,通过其ID将订单与所包含的产品相关联。
(5)订单可以通过orders1.csv、orders2.csv文件关联到客户。
初学者可以参照本例中各个CSV文件的列格式制作自己的CSV文件,再使用neo4j-import工具进行导入。
(1)界面和版本会有所变化,但是操作方式大体相同。
(2)该路径Neo4j不同版本会有所不同。
(3)需要先安装Java运行时(注意是Java运行时而不是Java SDK)。
(4)Neo4j更新很快,读者阅读本书时,这个界面或者方式可能已经变化了,请查阅Neo4j官网。