ngql 使用指南¶
ngql 是一个用于连接悦数图数据库开发版服务组中的 Graph 服务的命令行工具。本文介绍如何使用 ngql。
连接和断开悦数图数据库开发版¶
连接悦数图数据库开发版¶
使用配套 Docker Compose 部署时,按在 Docker Compose 部署中进入 ngql操作。在开发机上直接运行时,先下载并安装 ngql。以下./ngql示例在安装目录的bin中运行;Windows PowerShell 使用.\ngql.exe:
./ngql --host <host> --port <port> --user <username> --password <password>
使用默认端口映射时,在运行 Docker 的开发机上连接127.0.0.1:9669;从其他机器连接时,使用开发机 IP 和对应的开发机端口。输入悦数图数据库开发版当前的用户名和密码。
Note
如果密码中包含$等 Shell 特殊字符,请根据所使用的 Shell 使用引号包起来。
此外,也支持 TLS 加密连接。
运行./ngql --help查看连接命令选项的更多信息。
一旦成功连接到悦数图数据库开发版,ngql 会显示提示符 (>) 表示当前已连接到悦数图数据库开发版。例如:
Welcome to Yueshu Graph Database 5, the distributed graph database offering native GQL support!
:help for help.
(root@doc)>
在提示符下,您可以输入 GQL 语句与悦数图数据库开发版进行交互,或使用内置命令执行各种操作。
Note
如果 Graph 服务重启或者连接时指定的用户刚刚被授予GRANT CONNECT权限,建议等待至少 1 个心跳间隔(预设值为10秒)再建立连接。如果需要修改心跳间隔,请在所有服务的配置文件中,修改参数heartbeat_interval_secs。
执行单条 GQL 语句¶
在连接悦数图数据库开发版时使用选项-e指定要执行的单条 GQL 语句。GQL 语句必须用双引号括起来。例如:
./ngql --host <host> --port <port> --user <username> --password <password> -e "GQL_statement"
如果 GQL 语句包含特殊字符(如反引号`),不同的终端环境对这些字符的处理方式可能不同。
在 Bash 中,使用反斜杠(\)来转义反引号。例如:
./ngql --host <host> --port <port> --user <username> --password <password> -e "CREATE SCHEMA IF NOT EXISTS \`/home_schema\`"
或者,也可以使用单引号(')来包裹整条 GQL 语句。例如:
./ngql --host <host> --port <port> --user <username> --password <password> -e 'CREATE SCHEMA IF NOT EXISTS `/home_schema`'
在 PowerShell 中,使用反引号(`)来转义反引号。例如:
./ngql --host <host> --port <port> --user <username> --password <password> -e "CREATE SCHEMA IF NOT EXISTS ``/home_schema``"
有关转义特殊字符的更多信息,请查阅您使用的终端环境的文档。
导入脚本文件¶
还可以通过指定包含多条 GQL 语句的脚本文件来执行这些语句。为此,在连接悦数图数据库开发版时使用选项-f。例如:
./ngql --host <host> --port <port> --user <username> --password <password> -f filename.GQL
当脚本文件中的 GQL 语句超过一行时,必须用三单引号(''')或三双引号(""")括起来。例如:
$ cat filename.GQL
"""
CREATE GRAPH TYPE IF NOT EXISTS social_network AS {
NODE Person (LABEL Person {id INT64 PRIMARY KEY, name STRING DEFAULT 'unknown', age INT32 DEFAULT 0}),
NODE Company (LABEL Company {id INT64 PRIMARY KEY, name STRING})
}
"""
CREATE GRAPH IF NOT EXISTS social_network TYPED social_network
设置执行计划结果的最大宽度¶
执行计划结果中每行显示的最大宽度默认为 100 字符。如果执行结果的宽度超过最大宽度,结果将被截断。您可以在连接悦数图数据库开发版时使用选项--width-max修改最大宽度。例如:
./ngql --host <host> --port <port> --user <username> --password <password> --width-max 200
为执行语句请求设置超时时间¶
在连接悦数图数据库开发版时,可以使用选项-t或--timeout为会话中所有执行语句请求设置超时时间。
-t或--timeout选项的值为一个带单位的正整数或正小数,单位可以是:
ms(毫秒)s(秒)m(分钟)h(小时)
当值为0或不指定该选项时,表示没有超时时间限制。
例如:
./ngql --host <host> --port <port> --user <username> --password <password> -t 60s
在这个示例中,所有请求的超时时间被设置为 60 秒。如果在超时时间内没有完成请求处理,ngql 将返回错误消息。
您也可以在连接后使用命令:timeout动态设置或修改超时时间。更多信息,请参见内置命令中的为执行语句请求设置超时时间部分。
断开悦数图数据库开发版¶
要断开悦数图数据库开发版,您可以使用命令:exit或:q。例如:
(root@doc)> :q
内置命令¶
ngql 提供多个内置命令,您可以使用这些命令执行各种操作。使用命令:help查看所有可用的内置命令。例如:
(root@doc)> :help
内置命令的描述如下:
| 命令 | 别名 | 用法 | 描述 |
|---|---|---|---|
help |
:h |
:help |
显示帮助。 |
sleep |
- | :sleep 5 |
语句执行前休眠 N 秒。更多信息,请参见暂停语句的执行。 |
play |
- | :play movie |
加载内置数据集 movie。更多信息,请参见导入内置数据集。 |
planstyle |
- | :planstyle box |
调整 EXPLAIN/PROFILE 执行计划的展示视图。更多信息,请参见设置执行计划展示视图。 |
tee |
- | :tee [-o] <filename> |
将所有执行结果追加到输出文件。更多信息,请参见记录执行历史。 |
notee |
- | :notee |
停止将所有执行结果写入到输出文件。更多信息,请参见记录执行历史。 |
pager |
- | :pager <command> <row_limit> |
为结果设置分页。 更多信息,请参见分页。 |
nopager |
- | :nopager |
取消分页。更多信息,请参见请参见分页。 |
exit |
:e |
:exit |
断开连接 Graph 服务。更多信息,请参见断开悦数图数据库开发版。 |
quit |
:q |
:quit |
断开连接 Graph 服务。更多信息,请参见断开悦数图数据库开发版。 |
timeout |
- | :timeout <seconds> |
为执行语句请求设置或修改超时时间。0表示无超时时间。更多信息,请参见下文为执行语句请求设置超时时间。 |
warnings |
- | :warnings |
在每条语句执行后显示警告信息,无需手动执行SHOW WARNINGS。 |
nowarnings |
- | :nowarnings |
在每条语句执行后隐藏警告信息。您需要手动执行SHOW WARNINGS命令以显示警告消息。 |
暂停语句的执行¶
:sleep命令用于暂停 GQL 语句执行的指定秒数。此命令通常用于需要暂停的操作。
例如,在执行 GQL 语句前,暂停 5 秒钟,使用以下命令:
(root@doc)> :sleep 5
导入内置数据集¶
:play命令用于导入悦数图数据库开发版的内置数据集movie。有关movie数据集的信息,请参见示例数据集。
(root@doc)> :play movie
设置执行计划展示视图¶
:planstyle命令用于调整在 ngql 中执行 EXPLAIN 或 PROFILE 后所展示的执行计划的视图形式,包括嵌套视图(nest)、表格视图(table)和盒状视图(box)。默认风格为嵌套视图(nest)。
例如:
(root@nebula)> :planstyle table
记录执行历史¶
:tee命令用于将执行记录实时输出到文件。执行记录包括您在命令行界面上输入的所有命令及其输出。
确保在执行要记录的操作之前启用命令:tee。默认情况下,命令:tee是禁用的。要启用:tee,可以在提示符下执行以下命令:
(root@doc)> :tee [-o] </path/to/filename>
- 如果指定的文件
</path/to/filename>已存在,新执行记录将追加到现有文件中。要覆盖现有文件,需添加-o选项。 - 如果您指定的路径不存在或没有写入文件的权限,命令
:tee将无法写入文件。
例如,执行以下命令将执行记录输出到目录home下名为output.txt的文件中:
(root@doc)> :tee -o /home/<your_username>/output.txt
如果停止将执行记录输出到文件,使用命令:notee。
分页¶
:pager命令用于在执行语句之前设置每页显示的行数。默认情况下,每页显示的行数为200。
例如,执行以下命令将每页显示的行数设置为100:
(root@doc)> :pager less 100
要恢复默认的分页设置,使用命令:nopager。
(root@doc)> :nopager
为执行语句请求设置超时时间¶
除了在连接时设置超时时间外,您还可以在连接后使用命令:timeout动态设置或修改超时时间。
:timeout的值为一个带单位的正整数或正小数,单位可以是:
ms(毫秒)s(秒)m(分钟)h(小时)
当:timeout后面没有值或值为0,表示没有超时时间限制。
例如:
(root@doc)> :timeout 10s
更多信息,请参见连接和断开悦数图数据库开发版中的为执行语句请求设置超时时间部分。
显示和隐藏警告信息¶
:warnings和:nowarnings命令用于控制是否显示执行语句后产生的警告信息。默认情况下,使用:nowarnings。
-
:warnings:此命令自动显示由最后执行的 GQL 语句生成的告警信息。启用后,语句生成的任何告警都将立即显示在 ngql 输出中,而无需手动执行
SHOW WARNINGS命令。即使手动执行SHOW WARNINGS也不会显示任何信息,因为告警信息已被实时展示。
-
:nowarnings:此命令禁止在每条 GQL 语句执行后自动显示告警信息。启用后,告警将不会自动显示。如有需要,仍可通过执行
SHOW WARNINGS语句手动查看。
关于SHOW WARNINGS的更多信息,请参见 SHOW WARNINGS。
自动补全¶
ngql 支持 GQL 语句的自动补全。您可以使用Tab键自动完成正在输入的语句。例如,当您输入SHOW时,可以按Tab键完成语句。如果有多个补全选项,您可以反复按Tab键循环浏览可用选项。
历史语句回顾¶
同时按住Ctrl和R键搜索历史语句,按Esc退出搜索。还可以使用箭头键Up和Down浏览历史语句,并按Enter执行选定的语句。
查询结果的格式¶
ngql 默认以表格格式显示执行结果。例如,当执行语句SHOW CREATE GRAPH movie时,返回结果如下所示:
+------------+-------------------------------------------------------+
| graph_name | create_graph_statement |
+------------+-------------------------------------------------------+
| movie | CREATE GRAPH IF NOT EXISTS `movie` TYPED `movie_type` |
+------------+-------------------------------------------------------+
当处理返回大量列的查询,或某列内容特别长时,将结果以垂直格式显示会更直观。您可以在语句后附加选项\G来实现。例如,当您执行语句SHOW CREATE GRAPH movie \G时,结果如下所示:
*************************** 1. row ***************************
graph_name: movie
create_graph_statement: CREATE GRAPH IF NOT EXISTS `movie` TYPED `movie_type`
快捷键¶
ngql 提供以下键盘快捷键:
| 按键组合 | 描述 |
|---|---|
| Ctrl-A, Home | 将光标移动到行首。 |
| Ctrl-E, End | 将光标移动到行尾。 |
| Ctrl-B, Left | 将光标左移一个字符。 |
| Ctrl-F, Right | 将光标右移一个字符。 |
| Ctrl-Left, Alt-B | 将光标移动到上一个单词。 |
| Ctrl-Right, Alt-F | 将光标移动到下一个单词。 |
| Ctrl-D, Del | 删除光标下的字符(如果行不为空)。 |
| Ctrl-D | 结束文件并退出控制台(如果行为空)。 |
| Ctrl-C | 重置输入(创建一个新的空提示符)。 |
| Ctrl-L | 清屏(行保持不变)。 |
| Ctrl-T | 将前一个字符与当前字符互换。 |
| Ctrl-H, BackSpace | 删除光标前的字符。 |
| Ctrl-W, Alt-BackSpace | 删除光标前的单词。 |
| Alt-D | 删除光标后的单词。 |
| Ctrl-K | 删除从光标到行尾的内容。 |
| Ctrl-U | 删除从行首到光标的内容。 |
| Ctrl-P, Up | 显示历史记录中的上一个匹配项。 |
| Ctrl-N, Down | 显示历史记录中的下一个匹配项。 |
| Ctrl-R | 启动历史记录中的反向搜索(Ctrl-S 正向搜索,Ctrl-G 取消)。 |
| Ctrl-Y | 将缓冲区的内容粘贴到光标所在的位置(Alt-Y 粘贴下一个内容)。 |
| Tab | 显示下一个补全项。 |
| Shift-Tab | 显示上一个补全项(在 Tab 之后)。 |