通过开源数据库管理工具 DBeaver 连接 TDengine

DBeaver 是一款流行、开源的数据库管理工具以及 SQL 客户端,其功能强大,并且支持任何拥有 JDBC-Driver 的数据库(这意味着几乎所有数据库都支持)。 其官网的介绍是这样的:

Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Apache Hive, Phoenix, Presto, etc.

只需要简单的配置即可使用 DBeaver 来连接、管理 TDengine。

前置条件

  1. DBeaver 依赖 Java (JDK) 11 ,不过其安装包中已包含。可选安装 Maven、Git。
  2. 已安装并启动了 TDengine。
  3. 若使用原生连接(选择 TSDBDriver 驱动类),请在本地安装 TDengine 客户端。
  4. 若使用 REST 连接(选择 RestfulDriver 驱动类),请确保 taosAdapter 已经正常运行。

配置步骤

  • 可以克隆 DBeaver 在 GitHub 上的源码,执行 mvn package,也可以直接下载打包好的安装包。此处选择直接下载安装包。
  • 在 GitHub DBeaver 仓库的 Releases 处下载对应版本的 DBeaver,比如系统为 macOS,处理器芯片是 M1 ,此处下载 dbeaver-ce-22.1.2-macos-aarch64.dmg 进行安装。推荐使用 22.1.2 版本的 DBeaver,后续版本未进行验证。
  • 点击数据库标签,选择驱动管理器:

image

  • 新建驱动,选择 TDengine 的 JDBC Connector 驱动包(其中的 dist.jar 包),此驱动包可以下载或者自行编译、打包,参考 IDEA-源码编译 JDBC-Connector

image

  • 添加后点击找到类,此处使用 RESTful 驱动类演示(注意:若使用 com.taosdata.jdbc.TSDBDriver 驱动类,则需要安装 TDengine 客户端):

image

  • 填写一下驱动名称,简单填下配置:

image

  • TDengine 的 JDBC URL 规范为: jdbc:[TAOS|TAOS-RS]://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]

  • 点击“新建连接”,搜索配置好的驱动名称,点击后进入下一步:

image

  • 输入密码后,点击“测试连接”(注:需要在本机 hosts 文件上添加 URL 内域名的解析,URL 内的 locale、timezone 参数在 RESTful 连接中不生效):

image

验证方法

  • 点击“测试连接”若弹出“已连接”的提示代表连接成功。界面左侧能看到刷新出来的数据库(database),点击特定的表可以查看表的结构及数据:

image

  • 点击界面左上方的新建 SQL 编辑器,默认,输入 SQL 进行验证。需要注意的是,RESTful 请求是无状态的,查询、写入需要在表名前带上数据库名。
  • 2.X 版本中默认带 log 库,我们可以使用SHOW log.stables;查看包含哪些超级表后对特定表进行查询、调试:

image

  • 可以看到有个超级表叫做 dnodes_info,执行describe log.dnodes_info;查看表结构:

image

  • 再执行select last_row(*) from log.dnodes_info group by dnode_id;通过 dnode_id 能分组查询各 dnode_id 下的最新一条数据:

image

  • 还有其他操作也可以自行测试,比如写入一条数据后进行查询:

image

好了,到这里我们就大功告成了。DBeaver 功能强大,其他常用功能还包括导入导出 SQL 脚本、配置表过滤器、建立数据库任务等,大家可以慢慢体验。