导入 CSV

符合 Neo4j 导入工具标题格式 的 CSV 文件可以使用 apoc.import.csv 过程进行导入。此过程可用于在联机数据库中加载中小型数据集。对于导入较大的数据集,建议使用 导入工具 执行批量导入,该工具会将数据批量加载到脱机(初始为空)的数据库中。

使用

apoc.import.csv(<nodes>, <relationships>, <config>) 过程的参数如下。

<nodes> 参数是一个列表,其中每个元素都是一个映射,定义了要加载的源文件 (fileName) 及其一组标签 (labels)

名称 (name) description(描述) 示例

fileName

文件名

'file:/students.csv'

标签

标签集合

['Person', 'Student']

<relationships> 参数也是一个列表,其中每个元素都是一个映射,定义了要加载的源文件 (fileName) 及其给定的关系类型 (type)

名称 (name) description(描述) 示例

fileName

文件名

'file:/works_at.csv'

type

关系类型

'WORKS_AT'

<config> 参数是一个包含可选配置的映射。

该过程支持以下配置参数

表 1. 配置参数
名称 (name) type 默认 description(描述) 导入工具对应项

delimiter

STRING

,

列之间的分隔符

--delimiter=,

arrayDelimiter

STRING

;

数组中的分隔符

--array-delimiter=;

ignoreDuplicateNodes

布尔值 (BOOLEAN)

false

对于重复节点,仅加载第一个并跳过其余部分 (true),或导致导入失败 (false)

--ignore-duplicate-nodes=false

quotationCharacter

STRING

"

引号字符

--quote='"'

stringIds

布尔值 (BOOLEAN)

true

将 ID 视为字符串

--id-type=STRING

skipLines

INTEGER(整数)

1

要跳过的行数(包括标题)

不适用

ignoreBlankString

布尔值 (BOOLEAN)

false

如果为 true,则忽略带有空白字符串的属性

不适用

ignoreEmptyCellArray

布尔值 (BOOLEAN)

false

如果为 true,则忽略包含单个空字符串的数组属性,类似于导入工具

不适用

compression

枚举 [NONE, BYTES, GZIP, BZIP2, DEFLATE, BLOCK_LZ4, FRAMED_SNAPPY]

null

允许接收二进制数据,可以是不压缩的 (值: NONE) 或压缩的(其他值)。

不适用

charset

STRING

'UTF-8'

当前使用的 JDK 中扩展 java.nio.Charset 的字符集名称。例如:US-ASCII, ISO-8859-1, UTF-8, UTF-16

--input-encoding

batchSize

INTEGER(整数)

2000

在处理指定数量的行后提交并继续

不适用

apoc.import.csv 示例

加载节点

给定以下 CSV 文件和过程调用,数据库将加载两个设置了 name 属性的 Person 节点

persons.csv
name:STRING
John
Jane
CALL apoc.import.csv([{fileName: 'file:/persons.csv', labels: ['Person']}], [], {})

加载节点和关系

给定以下 CSV 文件和过程调用,数据库将加载两个 Person 节点以及它们之间的 KNOWS 关系(设置了 since 属性的值)。请注意,字段终止符和数组分隔符都已从默认值更改,并且 CSV 使用数字 ID。

persons.csv
:ID|name:STRING|speaks:STRING[]
1|John|en,fr
2|Jane|en,de
knows.csv
: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}
)

加载程序支持导入工具的高级功能