导入 CSV

符合 Neo4j 导入工具头格式 的 CSV 文件可以使用 apoc.import.csv 过程导入。此过程可用于将小到中等规模的数据集加载到在线数据库中。对于导入更大的数据集,建议使用 导入工具 执行批量导入,该工具可将数据批量加载到离线(初始为空)数据库中。

用法

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

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

名称 描述 示例

fileName

文件名

'file:/students.csv'

labels

标签集

['Person', 'Student']

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

名称 描述 示例

fileName

文件名

'file:/works_at.csv'

type

关系类型

'WORKS_AT'

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

该过程支持以下配置参数

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

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

Enum[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 文件和过程调用,数据库将加载两个 Person 节点,并设置其 name 属性

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}
)

该加载器支持导入工具的高级功能

© . All rights reserved.