apoc.export.json.query

此过程不建议在多线程中运行,因此并行运行时(Parallel runtime)不支持该过程。有关更多信息,请参阅 Cypher 手册 → 并行运行时

详细信息

语法

apoc.export.json.query(statement, file [, config ]) :: (file, source, format, nodes, relationships, properties, time, rows, batchSize, batches, done, data)

描述

将 Cypher 语句的查询结果导出至指定的 JSON 文件。

输入参数

名称

类型

描述

statement

STRING

用于收集导出数据的查询语句。

file

STRING

要导出数据的文件名。

config

MAP

{ stream = false :: BOOLEAN, writeNodeProperties = true :: BOOLEAN, writeRelationshipProperties = writeNodeProperties :: BOOLEAN, jsonFormat = 'JSON_LINES' :: STRING, compression = 'None' :: STRING, charset = 'UTF_8' :: STRING }。默认值为:{}

返回参数

名称

类型

描述

file

STRING

数据导出到的文件名。

source

STRING

导出数据的摘要。

format

STRING

文件的导出格式。

节点

INTEGER(整数)

已导出节点的数量。

relationships

INTEGER(整数)

已导出关系的数量。

属性

INTEGER(整数)

已导出属性的数量。

time

INTEGER(整数)

导出所花费的时间。

rows

INTEGER(整数)

返回的行数。

batchSize

INTEGER(整数)

导出过程执行的批处理大小。

batches

INTEGER(整数)

导出过程执行的批次数。

done

布尔值 (BOOLEAN)

导出是否成功执行。

data

ANY

导出返回的数据。

配置参数

该过程支持以下配置参数

配置参数
名称 类型 默认 描述

writeNodeProperties

布尔值 (BOOLEAN)

true

是否导出节点的属性。

writeRelationshipProperties

布尔值 (BOOLEAN)

writeNodeProperties 的值

是否导出关系属性。于 APOC 2025.05 版本引入

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

jsonFormat

枚举值[JSON_LINES, ARRAY_JSON, JSON, JSON_ID_AS_KEYS]

'JSON_LINES'

导出的 JSON 格式。

stream

布尔值 (BOOLEAN)

false

是否将 JSON 直接流式传输到客户端的 data 字段中。

导出到文件

默认情况下,导出到文件系统是被禁用的。我们可以通过在 apoc.conf 中设置以下属性来启用它:

apoc.conf
apoc.export.file.enabled=true

有关访问 apoc.conf 的更多信息,请参阅配置选项章节。

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

Failed to invoke procedure: Caused by: java.lang.RuntimeException: Export to files not enabled, please set apoc.export.file.enabled=true in your apoc.conf. Otherwise, if you are running in a cloud environment without filesystem access, use the {stream:true} config and null as a 'file' parameter to stream the export back to your client.

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

Failed to invoke procedure: Caused by: java.io.FileNotFoundException: /path/to/neo4j/import/tmp/fileName (No such file or directory)

我们可以通过在 apoc.conf 中设置以下属性来允许写入文件系统上的任何位置:

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

Neo4j 现在将能够写入文件系统上的任何位置,因此在设置此属性之前,请确保这是您的意图。

导出流

如果我们不想导出到文件,可以通过将文件名设置为 null 并提供 stream:true 配置,将结果流式传输回 data 列。