手把手教你用IntelliJ IDEA 操作 DM8
前言
随着科技的发展和全球数字化的推进,数据库已经成为企业和组织运作的核心组件之一。DM 数据库是一款国产的关系型数据库管理系统,因其高性能和稳定性而被广泛应用于政府、金融等多个领域。DM 官方工具用起来怪怪的,总觉得不方便,可能官方的东西都不咋地。为了提高效率和管理能力,众多开发者和IT专业人士选择了 IntelliJ IDEA 这款强大的集成开发环境(IDE)来进行数据库操作。本文将重点介绍如何使用IntelliJ IDEA进行 DM 数据库操作,帮助您更高效地进行项目开发和数据管理。
IDEA 创建DM 连接
创建数据连接驱动
IntelliJ IDEA 的数据库插件非常优秀,但是它并没有 DM 的驱动连接配置,这时候就要使用 IntelliJ IDEA 自带的自定义驱动程序,定义 DM 数据库驱动。安装下面步骤,一步步设置即可。
-
从顶部菜单栏选择
View --> Tool Windows --> Database
来打开数据库工具窗口,如下图所示。
2. 在数据库工具窗口内,点击右上角的+
图标,然后选择Driver
来开始创建一个新的达梦数据库连接,如下图所示。 -
编辑驱动信息,添加 DM 数据库连接驱动包,如下图所示。
- 1️⃣️️:设置驱动名称,我这里命名为DM8。
- 3️⃣️:这里不用配置,设置驱动类,这里设置完 2️⃣️ 后会自动出现。
- 2️⃣️:这里选择本地下载或者本地maven仓库中对应数据库的驱动jar包,这里是达梦驱动包,
- 4️⃣️:这个是生成数据库连接配置UI的配置,我这里是
jdbc:dm://{host::localhost}?[:{port::5236}][/{database}?][\?<&,user={user},password={password},{:identifier}={:param}>]
。
-
设置数据库方言,这里选择Oracle的方言
连接数据库
在 IntelliJ IDEA 中连接数据库是进行操作的第一步。首先,启动IDE并选择“Database”窗口。在该窗口中,点击“+”号,选择“Data Source”,然后选择您所使用的数据库类型,DataSource驱动就选用我们刚刚新增的达梦驱动。
接下来,填写连接所需的用户名、密码、URL等信息。
点击 “Test Connection” 按钮,测试数据库连接是否成功。如果一切正常,点击 “OK” 完成数据库连接配置。配置完成后,你可以在 IntelliJ IDEA 的数据库工具窗口中查看和管理达梦数据库的表、数据等信息,并在开发过程中使用数据库连接进行开发和调试操作。
数据库基本操作
管理表结构
在IntelliJ IDEA中,可以轻松地管理数据库的表结构。首先,选择要操作的数据库并右键点击,选择“New” > “Table”,然后输入表的名称。接下来,根据需求添加表字段。在字段添加完成后,点击“OK”按钮即可创建表。此外,还可以通过右键点击表并选择“Modify Table”来修改表结构。
导入数据
使用IntelliJ IDEA可以方便地导入数据到数据库中。首先,选择要导入数据的数据库并右键点击,选择“New” > “Data Source”,然后选择数据源类型。在数据源连接设置完成后,可以选择要导入的数据并设置相关参数。最后,点击“OK”按钮即可完成数据导入。
查询数据
IntelliJ IDEA提供了强大的查询功能,帮助我们轻松地查询数据库中的数据。在“Database”窗口中,可以输入SQL语句并执行查询。此外,还可以使用工具栏上的快捷键进行查询和过滤数据。对于复杂的查询需求,IntelliJ IDEA还提供了代码提示和语法高亮等功能来提高查询效率。
导出数据
导出数据是数据管理的重要环节之一。IntelliJ IDEA提供了导出功能来满足我们的需求。首先,选择要导出的数据库并右键点击,选择“Export Data to File”,然后选择导出文件的格式和路径。接下来,根据需求设置导出参数并点击“OK”按钮即可完成数据导出。
附录
DM 扩展连接属性的使用
连接串中可以设置的属性及其说明见下表。
属性 | 说明 | 是否必须设置 |
---|---|---|
user | 登录用户 | ✅ |
password | 登录密码 | ✅ |
host | 主库地址,包括 IP 地址、localhost 或者配置文件中主库地址 | ✅ |
port | 端口号,服务器登录端口号 | |
appName | 客户端应用程序名称 | |
osName | 操作系统名称 | |
socketTimeout | 网络通信链路超时时间,单位毫秒。 有效值范围0~2147483647,0 表示无限制;默认 0 | |
sessionTimeout | 会话超时时间,单位秒。 有效值范围 0~2147483647,0 表示无限制;默认 0; | |
connectTimeout | 连接数据库超时时间,单位毫秒。 有效值范围 0~2147483647,0 表示无限制;默认 0; | |
StmtPoolSize | 语句句柄池大小。有效值范围 0~2147483647,0 表示关闭;默认 15; | |
PStmtPoolSize prepare | 语句句柄池大小。有效值范围 0~2147483647,0 表示关闭;默认 0; | |
pstmtPoolValidTime prepare | 语句缓存的有效时间;单位毫秒。 有效值范围 0~2147483647,0 表示无限制;默认 0; | |
escapeProcess | 是否进行语法转义处理。取值 1/0 或 true/false;默认 true; | |
autoCommit | 是否自动提交。取值 1/0 或 true/false;默认 true; | |
alwayseAllowCommit | 在自动提交开关打开时,是否允许手动提交回滚。取值1/0 或true/false;默认 true; | |
localTimezone | 指定客户端本地时区,相关时间类型会自动完成服务器与本地时区的转换,单位分钟。 有效值范围-720~720;默认为当前系统时区; | |
maxRows | 结果集行数限制,超过上限结果集截断。 有效值范围0~2147483647,0 表示无限制;默认 0; | |
bufPrefetch | 结果集 fetch 预取消息 buffer 大小,单位 KB,有效值范围32~65535。 默认 0 表示按服务器配置,若结果集上指定了fetchSize 会自动预估大小; | |
LobMode | 大字段数据获取模式,默认 1。 1 表示 get 数据时从服务器段获取,2 表示结果集生成时将大字段数据完整缓存到本地;; | |
ignoreCase | 结果集列名是否忽略大小写。取值 1/0 或 true/false;默认true; | |
continueBatchOnError | 批量执行出错时是否继续执行。默认 false;取值(true/True,false/False) | |
batchType | 批处理模式,默认 1。1 表示批量绑定执行 2 表示一行一行执行; | |
resultSetType | 指定默认创建结果集类型,取值为 java 标准中的ResultSet。 | |
dbmdChkPrv | 编目函数是否进行权限检测。取值 1/0 或 true/false;默认true; | |
isBdtaRS | 是否使用列模式结果集,需同步服务器开启该功能。取值 1/0 或 true/false;默认 true; | |
columnNameUpperCase | 列名转换为大写字母。取值 1/0 或 true/false,默认 false。 | |
compatibleMode | 兼容其他数据库,取值为数据库名称。oracle 表示兼容 oracle,mysql 表示兼容 mysql; | |
schema | 指定用户登录后的当前模式,默认为用户名的默认模式 | |
loginMode | 指定优先登录的服务器模式,默认 4。 0:优先连接 PRIMARY 模式的库,NORMAL 模式次之,最后选择 STANTBY 模式; 1:只连接主库;2:只连接备库; 3:优先连接 STANDBY 模式的库,PRIMARY 模式次之,最后选择 NORMAL 模式; 4:优先连接 NORMAL 模式的库,PRIMARY 模式次之,最后选择 STANDBY 模式; | |
loginStatus | 服务名方式连接数据库时只选择状态匹配的库,默认 0。 0 表示不限制;3 表示 mount 状态;4 表示 open 状态;5 表示 suspend 状态; | |
loginDscCtrl | 服务名连接数据库时只选择 dsc control 节点的库;取值 1/0 或 true/false;默认 false; | |
epSelector | 服务名连接数据库时采用何种模型建立连接,默认 0。 0 表示依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上; 1 表示选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接 | |
switchTimes | 服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。 有效值范围1~2147483647,默认 1; | |
switchInterval | 服务名连接数据库时,若未找到符合条件的库成功建立连接,等待一定时间再继续下一次遍历。 单位 ms,有效值范围 0~2147483647;默认 1000; | |
cluster | 配合 auto_reconnect=2、epselector=1 使用,用于检测 DSC 集群节点故障恢复是否成功。 取值:DSC,说明用于DSC 环境中; | |
dbAliveCheckFreq | 检测数据库是否存活的频率。单位 ms,有效值范围0~2147483647,0 表示不检测;默认 0; | |
compress | 是否压缩消息。0 表示不压缩;1 表示完全压缩;2 表示优化的压缩;默认 0; | |
compressID | 消息压缩算法标识,最终与服务器支持情况协商决定。 0 表 示 zip;1 表示 snappy; 默认 0; | |
sslFilesPath | 数据库端开启 ssl 通信加密,该参数指定 ssl 加密文件的路径 | |
sslKeystorePass | 数据库端开启 ssl 通信加密,该参数指定 ssl 加密文件的指令 | |
uKeyName | Ukey 的用户名 | |
uKeyPin | Ukey 的口令 | |
cipherPath | 第三方加密算法引擎所在路径 | |
OsAuthType | 指定操作系统认证用户类型,开启操作系统认证时,用户名使用系统用户名。 0 表示关闭;1 表示 DBA;2 表示 SSO; 3 表示 AUDITOR;4 表示自适应。默认 0 | |
loginEncrypt | 是否进行通信加密;取值 1/0 或 true/false;默认 true; | |
loginCertificate | 该参数用于指定 dmkey 工具生成的公钥文件路径。 非加密通信的情况下,可对登录用户名密码进行增强加密; | |
mppLocal | 是否 MPP 本地连接。取值 1/0 或 true/false;默认 false; | |
mppOpt | Mpp 集群批量插入数据的优化处理;范围 0~1;默认 0; | |
rwSeparate | 是否使用读写分离系统,默认 0。 0 表示不启用;1 表示启用; 2 表示启用,备库由客户端进行选择,且只会选择服务名中配置的节点。 | |
rwPercent | 分发到主库的事务占主备库总事务的百分比;单位%,范围0~100;默认 25; | |
rwAutoDistribute | 读写分离系统事务分发是否由 JDBC 自动管理;取值 1/0 或true/false;默认 true; false:事务分发由用户管理,用户可通过设置连接上的 readOnly 属性标记事务为只读事务; | |
rwHA | 是否开启读写分离系统高可用。取值 1/0 或 true/false;默认false; | |
rwStandbyRecoverTime | 读写分离系统备库故障恢复检测间隔,单位 ms。 有效值范围 0~2147483647,0 表示不回复;默认 60000 | |
enRsCache | 是否开启结果集缓存。取值 1/0 或 true/false;默认 false; | |
rsCacheSize | 设置结果集缓冲区大小,以 M 为单位。 有效值范围 1~65535,如果设置太大,可能导致空间分配失败,进而使缓存失效 | |
rsRefreshFreq | 结果集缓存检查更新的频率,以秒为单位。 有效值范围0~10000,如果设置为 0,则不需检查更新; | |
logDir | 日志等其他一些 JDBC 过程文件生成目录,默认为 jvm 当前工作目录; | |
logLevel | 生成日志的级别,高级别同时记录低级别的信息,默认 off。日志按从低到高依次如下: off:不记录;error:只记录错误日志;warn:记录警告信息; sql:记录 sql执行信息;info:记录全部执行信息;all:记录全部 | |
logFlushFreq | 日志刷盘频率,单位 s。有效值范围 0~2147483647;默认 60; | |
statEnable | 是否启用状态监控。取值 1/0 或 true/false;默认 false; | |
statDir | 状态监控信息以文本文件形式输出的目录,默认为 jvm 当前工作目录; | |
statFlushFreq | 状态监控统计信息写文件刷盘频率,单位 s。 有效值范围0~2147483647;0 表示不写文件;默认 10; | |
statSlowSqlCount | 统计慢 sql top 行数;有效值范围 0~1000;默认 100; | |
statHighFreqSqlCount | 统计高频 sql top 行数;有效值范围 0~1000;默认 100; | |
statSqlMaxCount | 状态监控可以统计不同 sql 的个数;有效值范围 0~100000;默认 100000; | |
statSqlRemoveMode | 执行的不同 sql 个数超过 statSqlMaxCount 时使用的淘汰方式,取值 latest/eldest。 latest 表示淘汰最近执行的 sql,eldest表示淘汰最老的 sql;默认 eldest; | |
dmsvcconf | 指定 url 属性配置文件所在路径; | |
dbAliveCheckTimeout | 检测数据库是否存活的连接超时时间,如果该时间内未连接成功即认为数据库故障,单位 ms。 有效值范围1~2147483647;默认 10000; | |
check_freq | 服务名连接数据库时,循环检测连接是否需要重置的时间间隔。 即每隔一段时间,当连接对象发生改变,JDBC 连接会自动重置到新对象。 单位 ms,有效值范围 0~2147483647。默认值300000 |
总结
总之,使用IntelliJ IDEA进行数据库操作可以大大提高开发者和IT专业人士的工作效率和管理能力。通过本文的介绍,您已经了解了如何使用IDEA进行数据库操作的基本步骤。在实际应用中,您还可以不断探索和学习更多高级功能来满足不断变化的需求。希望本文能对您有所帮助!