apoc.load.csv

过程 Apoc 扩展

apoc.load.csv('urlOrBinary',{config}) YIELD lineNo, list, map - 以值流形式从 URL 加载 CSV,配置包含以下任何项:{skip:1,limit:5,header:false,sep:'TAB',ignore:['tmp'],nullValues:['na'],arraySep:';',mapping:{years:{type:'int',arraySep:'-',array:false,name:'age',ignore:false}}

签名

apoc.load.csv(urlOrBinary :: ANY?, config = {} :: MAP?) :: (lineNo :: INTEGER?, list :: LIST? OF ANY?, strings :: LIST? OF STRING?, map :: MAP?, stringMap :: MAP?)

输入参数

名称 类型 默认

urlOrBinary

ANY?

null

config

MAP?

{}

配置参数

该过程支持以下配置参数

表 1. 配置参数
名称 (name) type 默认 description(描述)

skip

boolean

none

跳过结果行

limit

Long

none

限制结果行

header(标题行)

布尔值 (boolean)

true

指示文件是否有标题行

sep(分隔符)

字符串

','

分隔符字符或 'TAB'

quoteChar(引号字符)

字符串

'"'

用于引用元素的字符

转义字符 (escapeChar)

字符串

'\'

用于转义元素的字符。如果不想使用任何字符,请使用 "NONE"

arraySep(数组分隔符)

字符串

';'

数组分隔符

ignore(忽略)

List<String>

[]

要忽略的列

nullValues(空值)

List<String>

[]

要视为 null 的值,例如 ['na',false]

mapping(映射)

Map

{}

逐字段映射,条目键为字段名,例如 {years:{…​.},详见下文

compression

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

null

允许读取二进制数据,可以是不压缩的(值:NONE)或压缩的(其他值)。请参阅 二进制文件示例

输出参数

名称 类型

行号

整数?

list

LIST? OF ANY?

字符串 (strings)

LIST? OF STRING?

Map

MAP?

字符串映射 (stringMap)

MAP?

从文件读取

默认情况下,禁止从文件系统导入。我们可以通过在 apoc.conf 中设置以下属性来启用它

apoc.conf
apoc.import.file.enabled=true

如果我们尝试在未先设置此属性的情况下使用任何导入过程,将会收到以下错误消息

Failed to invoke procedure: Caused by: java.lang.RuntimeException: Import from files not enabled, please set apoc.import.file.enabled=true in your apoc.conf

导入文件从 import 目录读取,该目录由 server.directories.import 属性定义。这意味着我们提供的任何文件路径都是相对于此目录的。如果我们尝试从绝对路径(例如 /tmp/filename)读取,将会收到类似于以下的错误消息

Failed to invoke procedure: Caused by: java.lang.RuntimeException: Can’t read url or key file:/path/to/neo4j/import/tmp/filename as json: /path/to/neo4j//import/tmp/filename (No such file or directory)

我们可以通过在 apoc.conf 中设置以下属性来启用从文件系统任意位置读取文件

apoc.conf
apoc.import.file.use_neo4j_config=false

Neo4j 现在可以从文件系统的任何位置读取,因此在设置此属性之前,请确保这是您的意图。

使用示例

test.csv 包含人员及其属性

test.csv
name,age,beverage
Selma,9,Soda
Rana,12,Tea;Milk
Selina,19,Cola

我们将此文件放入 Neo4j 实例的 import 目录中。

我们可以通过运行以下查询来加载此文件并返回其内容

CALL apoc.load.csv('test.csv')
YIELD lineNo, map, list
RETURN *;
表 2. 结果
行号 list Map

0

["Selma", "9", "Soda"]

{name: "Selma", age: "9", beverage: "Soda"}

1

["Rana", "12", "Tea;Milk"]

{name: "Rana", age: "12", beverage: "Tea;Milk"}

2

["Selina", "19", "Cola"]

{name: "Selina", age: "19", beverage: "Cola"}

二进制文件

您还可以从二进制 byte[](未压缩)或压缩文件中导入(允许的压缩算法有:GZIPBZIP2DEFLATEBLOCK_LZ4FRAMED_SNAPPY)。

CALL apoc.load.csv(`binaryGzipByteArray`, {compression: 'GZIP'})

CALL apoc.load.csv(`binaryFileNotCompressed`, {compression: 'NONE'})
表 3. 结果
行号 list Map

0

["Selma", "8"]

{name: "Selma", age: "8"}

1

["Rana", "11"]

{name: "Rana", age: "11"}

2

["Selina", "18"]

{name: "Selina", age: "18"}

© . This site is unofficial and not affiliated with Neo4j, Inc.