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=1738943948-Q6LaSHISQSEuf7OVJdtIqsI3VBFnonSI-0-4a46ead886fb3a9cf327e475aa00d2f3)
上例中以“--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=1738943948-zznU3Zmaqqujkzmx1vLKQLcWn2C6xht3-0-7f12481ec88376ceaa350b750eb2fb91)
表2-4 products.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101395.jpg?sign=1738943948-00VwcTnsys9Xm7cEnMAnrmQFVPW14mlr-0-fbdb81a6b434667fc20c80caa6cf36d4)
表2-5 orders_header.csv,orders1.csv,orders2.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101396.jpg?sign=1738943948-TFCiyekuZpgRa6HzxkYzOlXnS2pOxDDi-0-62376b94663e42f1537c27cf35f96b8c)
表2-6 order_details.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101397.jpg?sign=1738943948-4Evsl1ih2CicdfDSogxF5BsF4p1zTIeF-0-161dea96f47411adb48d64fdf3b066af)
表2-7 customer_orders_header.csv,orders1.csv,orders2.csv文件格式
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-T104_101398.jpg?sign=1738943948-f2Jc8YZjtKNEd4umol6VAxmNw87tpvwE-0-0fa8df733a7b290deb99f50a5485321c)
对于上面各个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官网。