【MogDB】图形化开发工具Mogeaver使用方法看这一篇就够了

@

目录

前言

关于Mogeaver

Mogeaver [moˈgi:və(r) ] 基于流行的开源图形化工具DBeaver,在严格遵循DBeaver Community Edition 的ASL开源协议基础上,进行了二次开发和封装,支持对于MogDB数据库的图形化开发及管理,支持通过图形化的方式创建,修改,调试数据库内的存储过程,自定义函数,及包。

为什么选择Mogeaver

  • 多平台支持
    • 支持macOS Intel版本,支持macOS Apple Silicon版本,
    • 支持Windows,包括但不限于Windows 10, Windows 11
    • 支持Linux,包括但不限于openEuler,Kylin Linux,UOS,Ubuntu,CentOS
  • 兼容MogDB/openGauss的特性
    • 支持创建数据库选择不同的兼容模式(A,B,PG)
    • 支持管理MogDB数据库角色(role)
    • 支持管理Large序列(MogDB 3.0之后版本支持)
    • 支持管理分区表(Partition Table)
    • 支持管理数据库内任务(Job)
    • 支持BLOB和CLOB字段的修改和查看
  • 支持图形化调试
    • 支持MogDB服务端的dbe_pldebugger调试功能
    • 支持断点调试和单步调试
    • 支持查看调试中变量值实时变化
    • 支持定位并跳转至准确的代码报错位置

版本说明

本文基于Mogeaver 23.3.1版本进行演示说明,部分特性在旧版本中不支持。

下载地址

https://docs.mogdb.io/zh/mogdb/v5.0/mogeaver-release-notes

一、界面布局说明

Mogeaver窗口包含菜单栏、工具栏、一个或多个编辑器和视图的工作区以及状态栏

image-razl.png

1.菜单栏

默认情况下,菜单栏包含以下菜单:

  • 文件(File) 菜单包含用于创建文件、文件夹、项目数据库连接、数据库项目、 ER 图以及导入和导出项的菜单项。
  • 编辑(Edit) 菜单包含全局命令,如剪切、复制、粘贴、删除和针对活动元素的添加书签
  • 导航(Navigate) 菜单允许通过脚本和数据库对象进行导航。
  • 搜索(Search) 菜单提供在文件数据库对象和跨数据中搜索的选项。
  • SQL 编辑器(SQL Editor) 菜单用于打开SQL 编辑器并管理其外观。
  • 数据库(Database) 菜单允许管理数据库驱动程序、连接和事务,并重新连接到数据库或从数据库断开连接。
  • 窗口(Window) 菜单包括管理 DBeaver 窗口外观的项:显示/隐藏和最小化/最大化视图和 编辑器、显示栏、分割编辑器以及管理其他首选项。
  • 帮助(Help) 菜单包含信息和帮助资源的链接,以及检查版本号和更新可用性的菜单项。

您可以自定义菜单栏和要显示的菜单项列表;为此,请转到 窗口(Window) -> 自定义 视角(Customize Perspective) -> 菜单可见性(Menu Visibility) 标签页。

2.工具栏

工具栏包含最基本和最常用命令的按钮:

有些按钮是启用的(彩色的),有些则是禁用的(灰色的)。根据工作区中活动的编辑器,启用和禁用按钮的集合会发生变化。只有启用的按钮适用于活动视图 或编辑器。

3.快捷栏

工作区域的左侧和右侧各有一个快捷栏。快捷栏托管视图和编辑器的快捷方式,如果至少有一个视图或编辑器最小化,则会显示,否则它们会隐藏

4.工作区

视图是工作区内的窗口,提供信息的展示和导航方式。

编辑器是您可以与文件和数据库的内容进行交互的窗口。

视图和编辑器可以作为单独的窗口出现,或者与其他视图/编辑器堆叠在一个标签式窗口中。 以下图片显示了一个标签式窗口的标题栏。如果标签不适合标题栏,则它们会隐藏。 要查看隐藏的标签列表,请点击显示列表图标,该图标还表示它们的数量:

几个视图和编辑器可以同时在工作区打开,但一次只能有一个处于活动状态。

您可以通过打开和关闭视图、将它们停靠在工作区的不同位置、将它们折叠到快捷栏或扩展它们以占据整个工作区并将它们恢复到最新的停靠位置来更改工作区的布局。

二、连接

1. 常规

点击菜单栏 数据库-新建数据库连接

image-vpbb.png

选择 MogDB数据库

image.png

填写 主机地址端口数据库名用户名密码

image-bhbk.png

点击 测试连接,出现下图表示连接正常

image-mmpc.png

点击 Finish完成连接创建

2.显示所有数据库

默认情况下,用上述方式新建的连接,只会显示指定连接的库,不会显示该实例下的其他数据库,可以在连接上,点击鼠标右键-编辑连接,在 MogDB选项卡中勾选 显示所有数据库

image-hgbt.png

image-azex.png

3.切换当前SQL窗口连接的数据库和schema

image-kdjd.png

image-hihq.png

4. 配置dbms_output输出

默认情况下,dbms_output不会输出到控制台(pldsql developer是自动执行了一下 dbms_output.enable),可以在连接上,点击鼠标右键-编辑连接,在 MogDB选项卡中勾选 启用DBMS输出

image-kfti.png

然后执行 dbms_output.put_line,即可在输出窗口中看到dbms_output的输出信息

image-hkvf.png

5. 配置C风格注释

默认情况下,Mogeaver的块注释按照postgresql的风格进行高亮,即支持嵌套注释。但是ORACLE风格的块注释是C语言风格的,不支持嵌套注释,遇到第一个块注释结尾就认为整段注释结束。
由于MogDB 5.2.0版本起,也支持了ORACLE风格块注释,因此Mogeaver也新增一个选项,用于切换注释高亮风格。可以在连接上,点击鼠标右键-编译连接,在 MogDB选项卡中勾选 Enable C Style Comment

开关的对比效果如下

image-uhwk.png

注意该选项需要配合数据库的 enable_oracle_comment参数使用

三、数据库导航

数据库导航器是用于处理数据库结构和内容的主视图。

1. 查看对象列表

image-fofq.png

2. 按名称过滤对象

image-ydyx.png

3. 查看对象属性

在对象名称上双击,或者鼠标右键-查看

image-lpwf.png

四、对象属性

1.属性

image-ktps.png

2.查看DDL

image-dsxm.png

3.数据(只有表和视图有)

image-nrhn.png

五、SQL编辑器

要开始使用SQL编辑器,您有几种选择:

  1. 通过数据库导航器
    • 在[数据库导航器]视图中导航到所需的数据库连接。
    • 按F4或从主菜单中选择SQL编辑器 -> 打开SQL脚本,或者右键单击连接并从上下文菜单中选择打开SQL脚本
    • 会出现一个选择SQL脚本窗口。单击任何脚本以在新选项卡中打开它。
  2. 打开最近的SQL脚本
    • 右键单击您的数据库连接,并从上下文菜单中选择SQL编辑器 -> 最近的SQL脚本,或从主菜单中选择SQL编辑器 -> 最近的SQL脚本。或者在[数据库导航器]视图中使用Ctrl+Enter快捷键。
    • 会出现一个选择SQL脚本窗口。单击任何脚本以在新选项卡中打开它。
  3. 创建新SQL脚本
    • 在主菜单中导航到SQL编辑器 -> 新建SQL编辑器
    • 按F3并在选择SQL脚本窗口中单击新建脚本

注意:连接的SQL编辑器与表或视图的SQL控制台不同。与控制台不同,它可以保存脚本及其所做的更改。

您可以在脚本文件夹中的[项目资源管理器]视图中看到所有已保存的SQL脚本。

1. SQL编辑器概述

SQL编辑器包含脚本面板、工具栏和结果面板。

提示:您可以按Alt+Enter或右键单击并导航到首选项来打开SQL编辑器首选项。

2. 切换手动提交、自动提交

默认新建的连接为自动提交,可根据需要改成手动提交(注意长时间持有未提交事务可能会造成其他会话被阻塞)

image-auki.png

3. 列编辑模式(块选择)

菜单栏-编辑-Toggle Block Selection,开启后,鼠标在SQL编辑器区域会变为十字型,此时可以按列选择、复制、输入

image-aduh.png

image-igwc.png

image-tdog.png

4. 快捷键

菜单栏-窗口-首选项-用户界面-Keys

image-nblt.png

可以输入菜单名称进行过滤,在 Binding处修改快捷键,比如 alter+shift+A是企业微信的截图键,和列编辑模式冲突,我们可以把这个快捷键修改成其他组合。另外还要修改生效范围,即 When,修改到 SQL编辑器上下文

5. 大小写转换

选中需要转换的文本,鼠标右键-格式-to Upper Case,转换成大写;to Lower Case转换成小写。或者选中文本后,按对应的快捷键

image-qdzf.png

6. SQL模板

菜单栏-窗口-首选项-编辑器-SQL编辑器-模板,目前版本预置了5个模板,可自定义

image-uabs.png

使用方式举例:
在SQL编辑器中输入 sf,然后按键盘的 tab

image-xdgz.png

image-lvyx.png

7. 修改字体大小

SQL编辑器和数值查看器:

菜单栏-窗口-首选项-用户界面-Appearance-Colors and fonts-Dbeaver Fonts-Monospace font

image-efiz.png

image-hwoy.png

8. 历史执行记录

点击SQL编辑器的工具栏中的

image-qiwk.png

会展示该SQL窗口执行过的SQL及相关执行信息

image-sbrw.png

9. 执行多条SQL

选择多条SQL,点击SQL编辑器的工具栏中的

image-uvvj.png

image-jjuo.png

注意该按钮无法识别 /为语句分隔符

10. 显示行号

方法一:在SQL编辑器左侧的空白处点击鼠标右键,选择 Show Line Numbers,该方法仅为此窗口临时开启

image-wuvs.png

方法二:菜单栏-窗口-首选项-编辑器-Text Editors,勾选 Show Line Numbers ,该方法为全局开启

image-diqe.png

11. 查看SQL的执行计划

选择待分析的SQL,点击SQL编辑器的工具栏中的

image-cpuc.png
根据需要勾选相关的选项,点击提交

image-dnhj.png

image-njif.png

注意如果勾选了 ANALYSE,SQL会真实执行一次

12. 查看输出

点击SQL编辑器的工具栏中的

该窗口会显示 raise noticeraise warning以及 dbms_output返回到客户端的字符串

image-wlju.png

13. 定位执行SQL的错误位置

执行SQL报错后,可以点击下方报错信息右边的 Go To The Error按钮,将光标自动移动到报错的位置。(注意该方式仅限于查看当前SQL文本的错误,不含SQL调用的存储过程内部的错误)

image-jnrf.png

14. 存储过程报错行数解读,以及找到对应代码

创建一个语法正确,但执行必定会报错的package,并执行它

image-libt.png

报错信息显示

ERROR: invalid input syntax for type numeric: "a"
  在位置:PL/pgSQL function pkg_test.p2() line 5 at assignment
SQL statement "CALL p2()"
PL/pgSQL function pkg_test.p1() line 6 at PERFORM

此处 ERROR:表示消息级别为ERROR,后面接的 invalid input syntax for type numeric: "a"就是报错原因;

在位置:PL/pgSQL function pkg_test.p2() line 5 意为这个报错是在pkg_test.p2()的第5行被触发

调用pkg_test.p2()的是 PL/pgSQL function pkg_test.p1() line 6,即pkg_test.p1()的第6行。

我们可以打开这个package的p1和p2,根据行号找到对应的位置

image-aijy.png

image-smqs.png

image-vbgz.png

注意Mogeaver支持查看package内单个procedure的代码,也支持按package查看代码。执行报错时返回的行号是单个procedure的行号,而非package的行号

image-oggn.png

image-rlko.png

六、数据查看/编辑器

1. 日期时间格式

默认情况下,Mogeaver查询结果显示的日期时间会格式化成保留秒后三位小数,不一定和数据库原始值一致,可以在 菜单栏-窗口-首选项-编辑器-数据编辑器-数据格式,勾选 禁用日期/时间格式,或者在下方自定义期望的格式

image-qsyf.png

2. 数字格式

默认情况下,Mogeaver查询结果显示的数值会格式化成按3位分组,如果不想要分组,可以在 菜单栏-窗口-首选项-编辑器-数据编辑器-数据格式,勾选 禁用数字格式化,或者在下方自定义期望的格式

image-wear.png

3. 查看游标

切换成手动提交

image-tiij.png

执行存储过程,鼠标选中需要查看的游标名称,右侧即可显示游标内的数据

image-jved.png

4. 导出数据

  • 导出方法一:

点击数据查看器下面的 导出数据

image-gzyn.png

如果点击此处的 Excel或者 网页浏览器,会直接调用本地程序打开导出到本地临时目录中的文件;
如果点击导出数据,则会弹出导出选项,可以选择需要导出的文件格式

image-ziof.png

  • 导出方法二:
    在查询的数据上鼠标右键-高级复制,此时会复制到操作系统剪贴板,可以粘贴到其他文本中。这在生成json/markdown格式数据时很方便。

image-kafq.png

  • 导出方法三:

在查询的数据上鼠标右键-生成SQL,可以快速生成对应数据的insert语句,方便测试时复制数据到其他环境

image-fybm.png

  • 导出方法四:

在数据库导航中,表上也可以点击鼠标右键,选择 导出数据生成SQL,操作和前面几种方法一致

image-tezm.png

5. 修改记录

查询表,然后直接编辑单元格内的数据,保存即可

image-jnns.png

注意在本机通过执行SQL的方式创建的表,mogeaver中的元数据不会立即更新,如果出现查询的数据为readonly状态,需要在数据库导航中手动刷新一下

image-yinv.png

6. 粘贴多行记录

  • 从查询结果中选定希望复制的数据,按 ctrl+c

image-afjy.png

  • 将光标移到行末尾,点击下方的 添加行,会自动插入一个空行

image-aqjd.png

  • 在空行上鼠标右键,高级粘贴,勾选 插入多行,点击 OK

image-iljn.png

  • 粘贴效果如下,点击 保存即可确认粘贴结果

image-tfby.png

七、调试

1. 调试步骤

  • 在导航栏打开需要调试的入口存储过程,如果需要调试的package内的存储过程,也要打开到package内的这个存储过程

image-nsrb.png

  • 切换到

image-shph.png

  • 点击上方工具栏的瓢虫按钮

image-nqxe.png

image-etfn.png

  • 输入参数(若有),点击 OK,进入调试

image-ffpk.png

此时可以进行添加断点、单步执行、单步进入、查看变量、执行到最后等操作

详细请参考演示视频
https://www.bilibili.com/video/BV1vw4m1Q7LM

2. 调试时的各种报错

  • 输入字符类型参数时未加单引号,导致语法错误
    调试时输入的参数是字面量,甚至可以支持写比较长的表达式,因此输入的字符参数也必须要加单引号,否则可能会被认为是字段名或对象名
  • 之前本来可以调试的存储过程在没有进行任何修改情况下无法进行调试了
    两种情况,一种是本地操作非常多,缓存比较大了;另一种是变更了Mogeaver的版本,但Mogeaver的缓存未成功更新(比如有占用)。这两种情况都可以通过删除本地缓存的元数据目录解决。在Windows上的路径是
C:\Users\{用户名}\AppData\Roaming\MogeaverData\workspace6\.metadata

八、其他

1. 拖动各种后缀的文件到mogeaver里打开

默认情况下,可以拖动sql后缀的文件到Mogeaver的SQL编辑器中,但是拖动其他文件可能会变成调用操作系统的默认打开方式中的软件。Mogeaver支持自定义配置对应后缀的文件需要的打开方式。
*.pck为例,在菜单栏-窗口-首选项-用户界面-Editors-File Associations ,在上面增加 *.pck的文件类型,并对应在下面关联上 SQL编辑器

image-uhhm.png

此时拖动pck文件到mogeaver中,即可自动创建一个SQL编辑器窗口打开这个文件

2. 变更运行软件的版本时需要执行的操作

一般情况下,变更Mogeaver的版本,只需要删除旧版本程序目录,启动新版本程序即可,但某些情况下,Mogeaver的java缓存可能更新异常,因此建议在变更Mogeaver版本时,手动删除以下目录

C:\Users\{用户名}\AppData\Roaming\MogeaverData\workspace6\.metadata

3. 多开如何避免目录冲突

有些运维机是单个用户多个会话同时登录,此时多个操作系统会话不能同时打开Mogeaver程序,会提示有文件被占用。
此时可以通过以下方式解决

  • 打开软件所在目录,鼠标右键 mogeaver.exe文件,点击 创建快捷方式
  • 鼠标右键刚刚生成的快捷方式,点击 属性
  • 在目标的最后输入 -data data1,点击 确定
  • 此时通过打开此快捷方式启动的mogeaver,会使用 data1目录作为数据目录,和默认目录不冲突了

当然也可以把data1改成其他路径,支持相对路径和绝对路径

4. 设置JVM内存大小

有些数据库内创建的对象非常多,存储过程代码量也非常大,有时候操作着会提示java虚拟机内存不足,需要经常重启软件才可以继续操作。
可以打开程序目录下的mogeaver.ini文件,将下面两个参数改大(注意操作系统本身可用内存)

-Xms64m
-Xmx1024m

重启mogeaver生效

5. 设置mogeaver日志级别

有时候某些SQL在gsql执行没有问题,但在mogeaver执行有问题,难以排查,可以通过设置客户端日志级别来记录更详细的日志
打开程序目录下的mogeaver.ini文件,新增以下配置

-Ddbeaver.jdbc.trace=true

重启mogeaver生效,之后日志会生成在以下目录中

C:\Users\{用户名}\AppData\Roaming\MogeaverData\workspace6\.metadata

6. 执行SQL脚本容易犯错的情况

常见错误操作是,SQL编辑器里写了多条语句,或者写了一段plsql代码,然后光标在随机位置,直接点击执行单条语句按钮。根据plsql developer中的默认配置,一般是整个窗口的SQL语句全执行了,但是在Mogeaver中,默认是执行光标附近的,截止到右侧最近的一个分号所对应的这条SQL。因此一般建议用鼠标选定单个语句后执行。

7. 命令行方式启动连接(集成进堡垒机)

在堡垒机场景,一般是禁止用户输入用户名密码,由管理员预先在堡垒机系统中配置好连接,将连接直接授权给堡垒机用户,可以减少密码泄露的风险,也有利于对密码进行统一管理。
一般堡垒机对于应用程序的支持,只要应用程序支持命令行启动即可,Mogeaver也可以支持命令行启动。

mogeaver -con "driver=MogDB|url=jdbc:opengauss://192.168.163.134:26200/testdb|user=system|password=oracle|save=false|name=mogdb_node1" -data tmpdata

8. 数据导入时自动给表增加了字段

在导入时如果没有进行好字段映射,那么对于文件中有字段,而未映射到数据库表中的,默认会自动新建字段,建议看清界面选项再进行操作

image-odtm.png

9. 在kylin v10 桌面版上使用Mogeaver

x86_64环境

wget https://cdn-mogdb.enmotech.com/mogeaver/23.3.1/mogeaver-ce-23.3.1-linux.gtk.x86_64.tar.gz
wget https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jre-17.0.11-linux-x64.tar.gz
tar -xf mogeaver-ce-23.1.1-linux.gtk.x86_64.tar.gz
mkdir mogeaver/jre
tar -xf bisheng-jre-17.0.11-linux-x64.tar.gz -C mogeaver/jre --strip-components 1
#启动(也可以在文件管理器中双击mogeaver启动)
mogeaver/mogeaver

arm64环境介质下载地址

https://cdn-mogdb.enmotech.com/mogeaver/23.3.1/mogeaver-ce-23.3.1-linux.gtk.aarch64.tar.gz
https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jre-17.0.11-linux-aarch64.tar.gz

10. 在UOS桌面版上使用Mogeaver

  • 已打开开发者模式的,可以参考上面kylin v10的操作方式;

  • 未打开开发者模式的,需要手动打包deb,并且添加签名。

    本人已打包好一个UOS桌面x86_64版本的Mogeaver,带签名,已上传到网盘,下载后可双击deb包进行安装
    mogeaver 23.3.1 for uos desktop(x86_64) download

11. 多个人在修改同一个数据库内的某个package,有人看到的不是最新的代码

在之前版本版本的Mogeaver中,本地获取到的数据库元数据,如果是不是通过本机的图形化界面修改的,就不会自动刷新,关闭对象重新再打开也不会刷新,包括本机用SQL语句的方式直接执行DDL操作也不会刷新,需要手动刷新数据库导航列表。
从23.3.1版本开始,在每次打开package的时候,会判断该package本地缓存是否与服务器一致,如果不一致则从服务器重新获取,如果一致则仍然使用缓存。所以只需要及时关闭package即可避免使用过旧的代码。这种方式还优化了package列表显示速度,因为不再需要首次获取列表就把所有package的代码全部缓存下来

posted on 2024-10-17 17:07  DarkAthena  阅读(24)  评论(0编辑  收藏  举报

导航