精通Neo4j
上QQ阅读APP看书,第一时间看更新

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行提交一次: