导入 CSV
符合 Neo4j 导入工具头格式 的 CSV 文件可以使用 apoc.import.csv
过程导入。此过程可用于将小到中等规模的数据集加载到在线数据库中。对于导入更大的数据集,建议使用 导入工具 执行批量导入,该工具可将数据批量加载到离线(初始为空)数据库中。
用法
apoc.import.csv(<nodes>, <relationships>, <config>)
过程的参数如下。
<nodes>
参数是一个列表,其中每个元素都是一个定义源文件 (fileName
) 的映射,用于加载一组标签 (labels
)
名称 | 描述 | 示例 |
---|---|---|
|
文件名 |
|
|
标签集 |
|
<relationships>
参数也是一个列表,其中每个元素都是一个定义源文件 (fileName
) 的映射,用于加载给定关系类型 (type
)
名称 | 描述 | 示例 |
---|---|---|
|
文件名 |
|
|
关系类型 |
|
<config>
参数是一个包含可选配置的映射。
该过程支持以下配置参数
名称 | type | 默认值 | 描述 | 导入工具对应项 |
---|---|---|---|---|
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 文件和过程调用,数据库将加载两个 Person
节点,并设置其 name
属性
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}
)
该加载器支持导入工具的高级功能