
2.5.4 使用neo4j-import工具导入到Neo4j
从Neo4j 2.2版本开始,系统就自带了一个大数据量的导入工具—neo4j-import,可支持并行、可扩展的大规模CSV数据导入。下面介绍如何使用这个工具导入CSV数据。
首先,可以在Neo4j系统目录下的path/to/neo4j/bin/neo4j-import路径下找到这个工具的可执行文件。以下是该工具的使用示例:

上例中以“--nodes:”子句开头的CSV文件是节点CSV文件;以“--relationships:”开头的是关系CSV文件;“--into”子句指明了导入的Neo4j数据库名称;“--id-type”子句指明了生成节点、关系的主键类型为string类型。
由于不能在neo4j-import工具中使用Cypher语句创建节点、关系,所以需要为节点和关系分别提供不同的CSV文件。上例中各个文件的列的组织形式如表2-3~表2-7所示。
表2-3 customers.csv文件格式

表2-4 products.csv文件格式

表2-5 orders_header.csv,orders1.csv,orders2.csv文件格式

表2-6 order_details.csv文件格式

表2-7 customer_orders_header.csv,orders1.csv,orders2.csv文件格式

对于上面各个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官网。