|| 列出数据库 - 操作手册 - Neo4j 文档

列出数据库

您可以使用 Cypher 命令 SHOW DATABASES 列出您的数据库。

语法

命令 语法

SHOW DATABASE

SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
[WHERE expression]
SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

SHOW DATABASES 输出

根据您想要查看的内容,您可以列出

  • 所有数据库。

  • 特定数据库。

  • 默认数据库。

  • 主数据库。

这些命令返回以下列

表 1. 列出数据库输出
列 描述 类型

name

数据库的名称。 默认输出

STRING

type

数据库的类型:system、standard 或 composite。 默认输出

STRING

aliases

数据库可能具有的任何别名的名称。 默认输出

LIST<STRING>

access

数据库访问模式,可以是 read-write 或 read-only。 默认输出 使用 ALTER DATABASE …​ SET ACCESS READ ONLY 时,数据库可能被描述为只读。

STRING

databaseID

数据库唯一 ID。

要使此值可用,数据库必须处于 online 或 deallocating 状态。对于其他数据库状态,该值将为 NULL。

STRING

serverID

服务器实例 ID。

STRING

address

集群式 DBMS 中的实例地址。独立数据库的默认值为 neo4j://:7687。 默认输出

STRING

role

数据库的当前角色(primary、secondary、unknown)。 默认输出

STRING

writer

对于接受此数据库写入的实例,值为 true(此实例是集群中此数据库的领导者,或者这是一个独立实例)。 默认输出

BOOLEAN

requestedStatus

数据库的预期状态。该值可以是 online 或 offline。 默认输出

STRING

currentStatus

数据库的实际状态。 默认输出

可能的状态为

  • online

  • offline

  • starting

  • stopping

  • store copying

  • initial

  • deallocating

  • dirty

  • quarantined

  • unknown

有关更多信息,请参阅 数据库状态。

STRING

statusMessage

解释数据库状态的消息,通常解释为什么它没有处于正确状态。 默认输出

STRING

default

显示这是否是 DBMS 的默认数据库。 默认输出 SHOW HOME DATABASE 或 SHOW DEFAULT DATABASE 不会返回此值。

BOOLEAN

home

如果这是当前用户的 home 数据库,则显示。 默认输出 SHOW HOME DATABASE 或 SHOW DEFAULT DATABASE 不会返回此值。

BOOLEAN

currentPrimariesCount

当前报告为正在运行的此数据库的主副本数量。它与 role=primary 和 name=this database 的行数相同。

INTEGER

currentSecondariesCount

当前报告为正在运行的此数据库的从副本数量。它与 role=secondary 和 name=this database 的行数相同。

INTEGER

requestedPrimariesCount

此数据库请求的主副本数量。如果 DBMS 当前正在减少数据库副本数量,则可能低于当前值;如果当前正在增加副本数量,则可能高于当前值。

INTEGER

requestedSecondariesCount

此数据库请求的从副本数量。如果 DBMS 当前正在减少数据库副本数量,则可能低于当前值;如果当前正在增加副本数量,则可能高于当前值。

INTEGER

creationTime

创建数据库的日期和时间。

ZONED DATETIME

lastStartTime

数据库上次启动的日期和时间。

ZONED DATETIME

lastStopTime

数据库上次停止的日期和时间。

ZONED DATETIME

store

有关存储引擎和存储格式的信息。

该值格式化为字符串,如下所示:

{storage engine}-{store format}-{major version}.{minor version}

要使此值可用,数据库必须处于 online 或 deallocating 状态。对于其他数据库状态,该值将为 NULL。

STRING

lastCommittedTxn

接收到的最后一个事务的 ID。

要使此值可用,数据库必须处于 online 或 deallocating 状态。对于其他数据库状态,该值将为 NULL。

INTEGER

replicationLag

与主实例上的数据库相比,当前数据库落后的事务数。延迟以负整数表示。在独立环境中,该值始终为 0。

要使此值可用,数据库必须处于 online 或 deallocating 状态。对于其他数据库状态,该值将为 NULL。

INTEGER

constituents

数据库可能具有的任何组成部分的名称。仅适用于复合数据库。 默认输出

LIST<STRING>

options

应用于数据库的选项映射。

MAP

SHOW DATABASES 命令的结果根据用户的 ACCESS 权限进行过滤。但是,某些权限允许用户查看其他数据库,而不管其 ACCESS 权限如何。

  • 具有 CREATE/DROP/ALTER DATABASE 或 SET DATABASE ACCESS 权限的用户可以查看所有标准数据库。

  • 具有 CREATE/DROP COMPOSITE DATABASE 或 COMPOSITE DATABASE MANAGEMENT 权限的用户可以查看所有复合数据库。

  • 具有 DATABASE MANAGEMENT 权限的用户可以查看所有数据库。

如果用户未被授予任何数据库的 ACCESS 权限,也未被授予上述任何特殊情况的权限,则仍可以执行该命令,但它只会返回始终可见的 system 数据库。

数据库状态

数据库的 currentStatus 可以是以下之一

State 描述

online

数据库正在运行。

offline

数据库未运行。如果 statusMessage 列已填充,则表示由于问题导致数据库未运行。

starting

数据库未运行,但即将运行。

stopping

数据库不再运行,但尚未完全停止。尚无法执行脱机操作(例如 load/dump)。

store copying

数据库当前正在从 Neo4j 的另一个实例更新。

initial

数据库尚未创建。

deallocating

仅适用于集群中的数据库。数据库仍在联机,但最终将由于其在集群中的角色转移到其他成员而脱机。状态为 deallocting,直到传输完成,这可能需要从几秒到一天或更长时间。

dirty

此状态表示已发生错误。数据库的基础存储文件可能无效。有关更多信息,请参阅 statusMessage 列或服务器日志。

quarantined

数据库已有效停止,并且在不再隔离之前其状态可能不会更改。有关更多信息,请参阅 statusMessage 列或服务器日志。

unknown

Neo4j 的此实例不知道此数据库的状态。

请注意,对于失败的数据库,currentStatus 和 requestedStatus 不同。这通常表示错误,但**并非总是如此**。例如,由于执行恢复,数据库可能需要一段时间才能从 offline 转换到 online。或者,在正常操作期间,由于必要的自动过程(例如一个 Neo4j 实例从另一个实例复制存储文件),数据库的 currentStatus 可能短暂地与其 requestedStatus 不同。

显示所有可用数据库

可以使用命令 SHOW DATABASES 显示所有可用数据库的摘要。

Query
SHOW DATABASES
Result
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name     | type       | aliases                      | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | default | home  | constituents |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "movies" | "standard" | ["films", "motion pictures"] | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | []           |
| "neo4j"  | "standard" | []                           | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | TRUE    | TRUE  | []           |
| "system" | "system"   | []                           | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | []           |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

从 Neo4j 5.3 开始,SHOW DATABASES 命令还会返回托管在脱机服务器上的数据库。对于此类数据库,address 列显示 NULL,currentStatus 列显示 unknown,statusMessage 显示 Server is unavailable。

显示特定数据库的详细信息

在此示例中,可以使用命令 SHOW DATABASE name YIELD * 显示特定数据库的详细信息。提供 YIELD 子句时,将返回完整的列集。

Query
SHOW DATABASE movies YIELD *
Result
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name     | type       | aliases                      | access       | databaseID                                                         | serverID                               | address          | role      | writer | requestedStatus | currentStatus | statusMessage | default | home  | currentPrimariesCount | currentSecondariesCount | requestedPrimariesCount | requestedSecondariesCount | creationTime             | lastStartTime            | lastStopTime | store                | lastCommittedTxn | replicationLag | constituents | options |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "movies" | "standard" | ["films", "motion pictures"] | "read-write" | "C066801F54B44EA1520F0FE392B4005AABF42D8DD0A5FD09969B955575D287D5" | "e3063985-e2f4-4728-824b-a7d53779667a" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | 1                     | 0                       | 1                       | 0                         | 2023-08-14T10:01:29.074Z | 2023-08-14T10:01:29.074Z | NULL         | "record-aligned-1.1" | 3                | 0              | []           | {}      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

显示数据库数量

可以使用 YIELD 和 RETURN 子句中的 count() 函数查看不同数据库的数量。

Query
SHOW DATABASES YIELD name
RETURN count(DISTINCT name) AS count
Result
+-------+
| count |
+-------+
| 3     |
+-------+

通过指定 name 列并按不同名称对结果进行排序,仅计算不同数据库的数量,**而不是**集群环境中数据库分配的数量。

显示默认数据库

可以使用命令 SHOW DEFAULT DATABASE 查看默认数据库。

Query
SHOW DEFAULT DATABASE
Result
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type       | aliases | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "standard" | []      | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

显示 home 数据库

可以使用命令 SHOW HOME DATABASE 查看当前用户的 home 数据库。

Query
SHOW HOME DATABASE
Result
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type       | aliases | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "standard" | []      | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

过滤列出的数据库

还可以使用 YIELD、ORDER BY 和 WHERE 对结果进行过滤和排序。

Query
SHOW DATABASES YIELD name, currentStatus, requestedStatus
ORDER BY currentStatus
WHERE name CONTAINS 'o'

在此示例中

  • 已使用 YIELD 子句减少了返回的列数。

  • 已更改返回列的顺序。

  • 使用 ORDER BY 按 currentStatus 列对结果进行排序。

  • 已将结果过滤为仅显示包含 'o' 的数据库名称。

还可以使用 SKIP 和 LIMIT 对结果进行分页。

Result
+--------------------------------------------+
| name     | currentStatus | requestedStatus |
+--------------------------------------------+
| "movies" | "online"      | "online"        |
| "neo4j"  | "online"      | "online"        |
+--------------------------------------------+
© . This site is unofficial and not affiliated with Neo4j, Inc.