Neo4j LOAD CSV语句的用法(附带实例)
在 Cypher 中,LOAD CSV 语句可以从本地文件系统中加载 CSV 文件,LOAD CSV 文件支持通过 HTTP、HTTPS、FTP 等方式访问 CSV 文件。
然后配置加载本地 CSV 文件的路径,具体配置为:
使用 LOAD CSV 语句导入文件,代码如下:
如果本地 CSV 文件中有列名,如下所示:
那么在导入时可以通过 WITH HEADERS 语句表示首行是列名。在使用 CREATE 语句时可以通过列名引用数据。代码如下:
相关配置项
在使用 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 文件需要符和以下规范:- 字符编码标准为 UTF-8;
- 换行符取决于具体环境,例如,UNIX 环境下的换行符为 \n,Windows 环境下的换行符为 \r\n;
- 默认字段分割符为半角逗号。用户也可使用 LOAD CSV 语句中的选项 FIELD TERMINATOR 来更改字段分割符。
加载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.