apoc.export.json.all

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

详细信息

语法

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

描述

将整个数据库导出到指定的 JSON 文件。

输入参数

名称

类型

描述

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.06 引入

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 列。

用法示例

本节中的示例基于以下示例图

CREATE (a:User {
    name:'Adam', age:42, male:true, kids:['Sam','Anna','Grace'],
    born:localdatetime('2015185T19:32:24'),
    place:point({latitude: 13.1, longitude: 33.46789})
})
CREATE (b:User {name:'Jim', age:42})
CREATE (c:User {age:12})

CREATE (a)-[:KNOWS {since: 1993}]->(b);

以下查询将整个数据库导出到文件 all.json

CALL apoc.export.json.all("all.json",{});
结果
file source format 节点 relationships 属性 time rows batchSize batches done data

"all.json"

"database: nodes(3), rels(1)"

"json"

3

1

10

7

0

-1

0

TRUE

NULL

all.json 的内容如下所示

all.json
{"type":"node","id":"0","labels":["User"],"properties":{"born":"2015-07-04T19:32:24","name":"Adam","place":{"crs":"wgs-84","latitude":13.1,"longitude":33.46789,"height":null},"age":42,"male":true,"kids":["Sam","Anna","Grace"]}}
{"type":"node","id":"1","labels":["User"],"properties":{"name":"Jim","age":42}}
{"type":"node","id":"2","labels":["User"],"properties":{"age":12}}
{"id":"0","type":"relationship","label":"KNOWS","properties":{"bffSince":"P5M1DT12H","since":1993},"start":{"id":"0","labels":["User"],"properties":{"born":"2015-07-04T19:32:24","name":"Adam","place":{"crs":"wgs-84","latitude":13.1,"longitude":33.46789,"height":null},"age":42,"male":true,"kids":["Sam","Anna","Grace"]}},"end":{"id":"1","labels":["User"],"properties":{"name":"Jim","age":42}}}

以下查询在 data 列中返回整个数据库的流:

CALL apoc.export.json.all(null,{stream: true})
YIELD file, nodes, relationships, properties, data
RETURN file, nodes, relationships, properties, data
结果
file 节点 relationships 属性 data

NULL

3

1

10

"{\"type\":\"node\",\"id\":\"0\",\"labels\":[\"User\"],\"properties\":{\"born\":\"2015-07-04T19:32:24\",\"name\":\"Adam\",\"place\":{\"crs\":\"wgs-84\",\"latitude\":33.46789,\"longitude\":13.1,\"height\":null},\"age\":42,\"male\":true,\"kids\":[\"Sam\",\"Anna\",\"Grace\"]}} {\"type\":\"node\",\"id\":\"1\",\"labels\":[\"User\"],\"properties\":{\"name\":\"Jim\",\"age\":42}} {\"type\":\"node\",\"id\":\"2\",\"labels\":[\"User\"],\"properties\":{\"age\":12}} {\"id\":\"50000\",\"type\":\"relationship\",\"label\":\"KNOWS\",\"properties\":{\"since\":1993},\"start\":{\"id\":\"0\",\"labels\":[\"User\"]},\"end\":{\"id\":\"1\",\"labels\":[\"User\"]}}"