导入 CSV
符合 Neo4j 导入工具标题格式 的 CSV 文件可以使用 apoc.import.csv 过程进行导入。此过程可用于在联机数据库中加载中小型数据集。对于导入较大的数据集,建议使用 导入工具 执行批量导入,该工具会将数据批量加载到脱机(初始为空)的数据库中。
使用
apoc.import.csv(<nodes>, <relationships>, <config>) 过程的参数如下。
<nodes> 参数是一个列表,其中每个元素都是一个映射,定义了要加载的源文件 (fileName) 及其一组标签 (labels)
| 名称 (name) | description(描述) | 示例 |
|---|---|---|
|
文件名 |
|
|
标签集合 |
|
<relationships> 参数也是一个列表,其中每个元素都是一个映射,定义了要加载的源文件 (fileName) 及其给定的关系类型 (type)
| 名称 (name) | description(描述) | 示例 |
|---|---|---|
|
文件名 |
|
|
关系类型 |
|
<config> 参数是一个包含可选配置的映射。
该过程支持以下配置参数
| 名称 (name) | type | 默认 | description(描述) | 导入工具对应项 |
|---|---|---|---|---|
delimiter |
STRING |
, |
列之间的分隔符 |
|
arrayDelimiter |
STRING |
; |
数组中的分隔符 |
|
ignoreDuplicateNodes |
布尔值 (BOOLEAN) |
false |
对于重复节点,仅加载第一个并跳过其余部分 (true),或导致导入失败 (false) |
|
quotationCharacter |
STRING |
" |
引号字符 |
|
stringIds |
布尔值 (BOOLEAN) |
true |
将 ID 视为字符串 |
|
skipLines |
INTEGER(整数) |
1 |
要跳过的行数(包括标题) |
不适用 |
ignoreBlankString |
布尔值 (BOOLEAN) |
false |
如果为 true,则忽略带有空白字符串的属性 |
不适用 |
ignoreEmptyCellArray |
布尔值 (BOOLEAN) |
false |
如果为 true,则忽略包含单个空字符串的数组属性,类似于导入工具 |
不适用 |
compression |
|
|
允许接收二进制数据,可以是不压缩的 (值: |
不适用 |
charset |
STRING |
'UTF-8' |
当前使用的 JDK 中扩展 java.nio.Charset 的字符集名称。例如: |
|
batchSize |
INTEGER(整数) |
2000 |
在处理指定数量的行后提交并继续 |
不适用 |
apoc.import.csv 示例
加载节点
给定以下 CSV 文件和过程调用,数据库将加载两个设置了 name 属性的 Person 节点
name:STRING John Jane
CALL apoc.import.csv([{fileName: 'file:/persons.csv', labels: ['Person']}], [], {})
加载节点和关系
给定以下 CSV 文件和过程调用,数据库将加载两个 Person 节点以及它们之间的 KNOWS 关系(设置了 since 属性的值)。请注意,字段终止符和数组分隔符都已从默认值更改,并且 CSV 使用数字 ID。
:ID|name:STRING|speaks:STRING[] 1|John|en,fr 2|Jane|en,de
:START_ID|:END_ID|since:INT 1|2|2016
CALL apoc.import.csv(
[{fileName: 'file:/persons.csv', labels: ['Person']}],
[{fileName: 'file:/knows.csv', type: 'KNOWS'}],
{delimiter: '|', arrayDelimiter: ',', stringIds: false}
)
加载程序支持导入工具的高级功能