2.5.3 使用Load CSV指令导入到Neo4j
Neo4j提供了Load CSV命令帮助我们将CSV数据文件导入到Neo4j中,下面给出几个读取CSV文件但不存入数据库的例子。
2.5.3.1 简单导入CSV数据
以下将使用Load CSV指令读取但不存入数据库:
上述例子仅仅用来读取CSV文件,并没有将数据存入到数据库中。下面介绍Load CSV的用法。
LOAD CSV FROM "file-url" AS line,这条指令将指定路径下的CSV文件读取出来,其中file-url是文件的地址,可以是本地文件路径也可以是网址,只要能从地址中读取到CSV文件即可,因此也可以这样写:
这样就可以读取网址指定的movie.csv文件。
或者可以使用本地文件路径:
这样就可以读取到E:/products.csv文件。
如果把CSV文件放置在Neo4j系统路径的import文件夹内,则不需要指定CSV文件的路径,语句如下所示,可以读取到放入import文件夹内的products.csv文件。
RETURN语句是用来返回并显示结果到结果显示区的语句。
LIMIT语句是用来限制返回的行数。
现在我们可以读取CSV文件了,但是数据并没有存入到数据库中。要将数据存入到Neo4j数
执行完上面语句后,会看到结果显示区显示了所创建的节点数量,如图2-95所示。
图2-95 显示区显示了所创建的节点数量
然后,用以下语句来查看数据库中是否已经有导入的数据:
运行上面语句后,可以得到如图2-96所示的结果。
图2-96 查询导入后结果
如果我们的结果如上图所示,则说明数据已经导入成功了。
2.5.3.2 导入CSV时附带表头
下例介绍如何在导入CSV时附带上表头。
上述语句添加了WITH HEADERS子句,它的功能就是在导入CSV时附带上表头,这些表头可以通过line.Id、line.Track指定。执行完上述语句后,可以使用下面语句查看并确认:
将得到如图2-97所示的结果。
图2-97 查询导入后的结果
可以看到,每个数据元素都带有TrackId、Name、Length头部元素。
2.5.3.3 导入CSV大文件
如果要导入包含大量数据的CSV文件,则可以使用PERODIC COMMIT子句。
使用PERIODIC COMMIT可以指示Neo4j在执行完一定行数后提交数据再继续,这样就能够减少内存开销。
PERIODIC COMMIT的默认值为1000行,因此数据将每一千行提交一次。
如果要使用PERIODIC COMMIT,只需要在LOAD CSV语句之前插入USING PERIODIC COMMIT语句。
具体使用方法如下:
我们可以通过如下语句改成每800行提交一次: