首页 > 编程笔记 > MySQL笔记 阅读:17

Neo4j LOAD CSV语句的用法(附带实例)

在 Cypher 中,LOAD CSV 语句可以从本地文件系统中加载 CSV 文件,LOAD CSV 文件支持通过 HTTP、HTTPS、FTP 等方式访问 CSV 文件。

相关配置项

在使用 LOAD CSV 语句之前,需要先导入数据的相关配置。首先配置 Neo4j 对网络中 CSV 文件的读取权限,具体配置项为:
dbms.security.allow_csv_import_from_file_urls
该配置项的作用是确定 Neo4j 是否可以从网络中读取 csv 文件,其默认值为 true,表示可以读取网络中的 CSV 文件。

然后配置加载本地 CSV 文件的路径,具体配置为:
dbms.directories.import
该配置项的作用是指定加载本地 CSV 文件的路径位置,若其值为 import,则表示只允许从 import 目录下加载 CSV 文件。

CSV文件格式

LOAD CSV 语句加载的 CSV 文件需要符和以下规范:

加载CSV文件

下面通过本地 CSV 文件和网络这两种方式将 CSV 文件加载到图中。

1) 方式1:加载本地CSV文件

在 Neo4j 安装目录下的 import 文件夹下,创建一个 artists.csv 文件,文件内容如下。在这里,import 的路径为 D∶\neo4j-community-3.5.5\import(Windows 环境下)或 /var/lib/neo4j/import(Ubuntu 环境下)。
1,ABBA,1992
2,Roxette,1986
3,Europe,1979
4,The Cardigans,1992

使用 LOAD CSV 语句导入文件,代码如下:
LOAD CSV FROM 'file:///artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})
返回值如下:

Added 4 labels, created 4 nodes, set 8 properties, completed after 130 ms.


如果本地 CSV 文件中有列名,如下所示:
Id,   Name,            Year  # 字段名
1,    ABBA,            1992  # 各字段对应的数据值
2,    Roxette,         1986
3,    Europe,          1979
4,    The Cardigans,   1992

那么在导入时可以通过 WITH HEADERS 语句表示首行是列名。在使用 CREATE 语句时可以通过列名引用数据。代码如下:
LOAD CSV WITH HEADERS FROM 'file:///artists-with-headers.csv' AS line
CREATE (:Artist { name: line.Name, year: toInteger(line.Year)})
无论本地 CSV 文件是否有列名,最终导入的数据都是一样的。读者可对此自行进行验证。

2) 方式2:加载网络CSV文件

下面从 neo4j 提供的数据源加载 artists.csv 文件,代码如下:
LOAD CSV FROM 'artists.csv' AS line
CREATE (:Artist { name: line[1], year: toInteger(line[2])})
返回值如下:
Added 4 labels, created 4 nodes, set 8 properties, completed after 1130 ms.

相关文章