HBase常用Shell命令

news/2024/4/27 14:45:00/文章来源:https://blog.csdn.net/weixin_42011858/article/details/129378391

HBase提供了一个非常方便的命令行交互工具HBase Shell。通过HBase Shell,HBase可以与MySQL命令行一样创建表、索引,也可以增加、删除和修改数据,同时集群的管理、状态查看等也可以通过HBase Shell实现。

一、数据定义语言

数据定义语言(Data Definition Language,DDL),包括数据库表的创建、修改等语句。

1,创建表

创建表的语句如下:
create 's_behavior', {NAME => 'pc'} , {NAME => 'ph'}
该语句创建了一个s_behavior表,用来存储用户的行为数据,这个表有两个列族,列族pc用来存储用户PC端的用户行为数据,列族ph用来存储用户手机端的用户行为数据。

2,查看所有表

查看所有表的语句如下:
list
该语句会列出HBase数据库中所有已经创建的表。

3,查看已创建的表

查看已创建的表的语句如下:
describe 's_behavior'

在这里插入图片描述
虽然在创建表的时候没有指定任何属性,但是HBase默认会给表设置一些属性:
(1)BLOOMFILTER:布隆过滤器。做Scan操作时用来排除待扫描的存储文件,第9章会有详细描述。
(2)IN_MEMORY:数据是否常驻块缓存。一般只有HBase系统的元数据表才会设置为true。
(3)VERSIONS:对这个表HBase应该保留多少个数据版本。HBase对表的数据行可以保留多个数据版本,以时间戳来区分。
(4)KEEP_DELETED_CELLS:保留删除的数据。意味着可以通过Get或者Scan请求获取已经被删除的数据(如果数据删除后经过了一次大合并,那么这些删除的数据也会被清理),只要这行数据的时间戳在查询的时间范围即可。注意,如果需要开启集群间复制,则这个属性必须为true,否则可能导致数据复制失败。
(5)DATA_BLOCK_ENCODING:数据块编码。用类似于压缩算法的编码形式来节省存储空间,主要是针对行键,用时间换空间,默认情况下不启用数据块编码,第9章会有详细描述。
(6)COMPRESSION:压缩方式。HBase提供了多种压缩方式(如Snappy、LZO、gzip等)用来在数据存储到磁盘之前对数据进行压缩,以减少存储空间。第9章也会详细介绍并对比各种压缩方式。
(7)TTL:存活时间(Time To Live),数据的有效时长。超过有效时长的数据在大合并的时候会被删除。
(8)BLOCKSIZE:HBase读取数据的最小单元。设置过大会导致读取很多不需要的数据,过小则会产生更多的索引文件,默认大小为64 KB。
(9)REPLICATION_SCOPE:集群间数据复制的开关。当集群间数据复制配置好后,REPLICATION_SCOPE=1表示开启复制。默认值为0,表示不开启复制。

4,修改表

修改表的模式(schema)之前需要先将表下线,然后执行修改的命令,再上线。下面的代码将s_behavior表修改为开启集群间复制:
disable 's_behavior'
alter 's_behavior', 
{NAME=>"cf", REPLICATION_SCOPE=>"1", KEEP_DELETED_CELLS => 'TRUE'}enable 's_behavior'

二、数据操纵语言

数据操纵语言(Data Manipulation Language,DML)包括插入、获取、扫描数据的put命令、get命令、scan命令,以及删除数据的delete命令、deleteall命令和truncate命令。

1,put命令

put命令用来插入一行数据到HBase表。

格式:
put <table>,<rowkey>,<列族:列限定符>,<值>
示例:
hbase(main):004:0> put 's_behavior','12345_1516592489001_1','pc:v','1001'
0 row(s) in 0.2020 secondshbase(main):005:0> put 's_behavior','12345_1516592489001_1','ph:o','1001'
0 row(s) in 0.0050 second
第一条命令插入一条用户PC端行为数据,
第二条命令插入一条用户手机端行为数据。
注意,两条命令行键相同,只是指定了不同的列族,因此实际上两条数据在HBase中逻辑上是同一条数据。之后用该行键可以唯一地定位到这两个列族的数据。

2,get命令

get命令用来根据行键获取HBase表的一条记录。

格式:
get <table>,<rowkey>
示例:
使用get命令通过行键获取表s_behavior的一行数据,包括这行数据的所有列族:
hbase(main):006:0> get 's_behavior','12345_1516592489001_1'
COLUMN                             CELL 
pc:v                         timestamp=2022-01-24T19:33:18.352, value=1001 
ph:o                         timestamp=2022-01-24T19:33:35.071, value=1001
2 row(s) in 0.0330 seconds通过给get命令指定时间戳来获取一行数据某个时刻的镜像:
hbase(main):007:0> get 's_behavior','12345_1516592489001_1' , {TIMESTAMP => '1643023998352'}
COLUMN                             CELL 
pc:v                         timestamp=2022-01-24T19:33:18.352, value=1001
1 row(s) in 0.0120 secondsget命令也支持获取数据的多个版本,但是需要在创建表的语句中指定VERSIONS属性。先修改表支持多个版本,然后用get命令获取多个版本的数据:
hbase(main):008:0> alter 's_behavior',NAME=>'pc',VERSIONS =>3
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9370 secondshbase(main):009:0> put 's_behavior','12345_1516592489001_1','
pc:v','1002'
0 row(s) in 0.0100 secondshbase:010:0> get 's_behavior','12345_1516592489001_1',{COLUMN => 'pc:v',VERSIONS=>2}
COLUMN                        CELL 
pc:v                     timestamp=2022-01-24T19:49:20.398, value=1002 
pc:v                     timestamp=2022-01-24T19:33:18.352, value=1001
1 row(s)Took 0.0266 seconds

3,scan命令

scan命令用来扫描表的数据。scan命令是HBase数据查询命令中最复杂的命令,需要特别注意查询的数据量,以免由于扫描数据过大导致HBase集群出现响应延迟。

格式:
scan <table>
示例:
使用scan命令来查询表s_behavior中的所有记录:
hbase(main):012:0* scan 's_behavior'
ROW                            COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:49:20.398, value=1002 12345_1516592489001_1  column=ph:o, timestamp=2022-01-24T19:33:35.071, value=1001
1 row(s) in 0.0120 seconds

(1)获取时间区间内数据

示例:
使用时间区间获取“1643021990187<=时间戳<1643023998353”的数据:
hbase(main):013:0> scan 's_behavior', {TIMERANGE => [1643021990187,1643023998353]}
ROW                               COLUMN+CELL 
12345_1516592489001_1     column=ph:o, timestamp=2022-01-24T19:33:18.352, value=1001
1 row(s) in 0.0190 seconds

(2)获取多个版本数据

示例:
使用VERSIONS参数获取表的两个版本数据:
hbase(main):003:0* scan 's_behavior', {VERSIONS=>2}
ROW                           COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:49:20.398, value=1002 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:18.352, value=1001 
12345_1516592489001_1  column=ph:o, timestamp=2022-01-24T19:33:35.071, value=1001
1 row(s) in 0.1200 seconds

(3)获取用户前几行数据

示例:
获取ID为12345的用户的前5行数据:
hbase(main):013:0* scan 's_behavior', {FILTER => "PrefixFilter('12345_')" ,COLUM
NS => ['pc'],LIMIT=>5}ROW                               COLUMN+CELL 
12345_1516592489001_1     column=pc:v, timestamp=1521442781396, value=1002 
12345_1516592489001_2     column=pc:v, timestamp=1521442781447, value=1003 
12345_1516592489001_3     column=pc:v, timestamp=1521442781471, value=1004 
12345_1516592489001_4     column=pc:v, timestamp=1521442781492, value=1005 
12345_1516592489001_5     column=pc:v, timestamp=1521442781513, value=1006
5 row(s) in 0.0240 seconds

因为表s_behavior的行键都是以用户ID开头,所以可以使用一个前缀过滤器。注意,需要在用户ID(12345)后面带上下划线,否则会匹配到行键为123450_xxx等类似的数据。

(4)获取某个用户某个时间区间内产生的PC端行为数据

scan命令可以指定扫描开始和结束行键。

示例:
获取ID为12345的用户的某个时间区间内产生的PC端行为数据,使用STARTROW、STOPROW参数指定扫描一个前闭后开的区间,即“STARTROW<=行键<STOPROW”:
hbase(main):014:0> scan 's_behavior', {STARTROW =>
'12345_1516592489001' ,STOPROW=>'12345_15165924890
02' ,COLUMNS => ['pc']}ROW                           COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:35.071, value=1002 
12345_1516592489001_2  column=pc:v, timestamp=2022-01-24T19:34:01.012, value=1003 
12345_1516592489001_3  column=pc:v, timestamp=2022-01-24T19:34:01.012, value=1004 
12345_1516592489001_4  column=pc:v, timestamp=2022-01-24T19:34:02.062, value=1005 
12345_1516592489001_5  column=pc:v, timestamp=2022-01-24T19:34:02.076, value=1006 
12345_1516592489001_6  column=pc:v, timestamp=2022-01-24T19:34:03.089, value=1007 
12345_1516592489001_7  column=pc:v, timestamp=2022-01-24T19:34:04.011, value=1008 
12345_1516592489001_8  column=pc:v, timestamp=2022-01-24T19:34:05.171, value=1009
8 row(s) in 0.0320 seconds

(5)获取用户对某种商品的行为数据

示例:
第一条命令查询表s_behavior中列值等于1001的数据,第二条命令查询表s_behavior中列值包含1002的数据:
hbase(main):015:0> scan 's_behavior', FILTER=>"ValueFilter(=,'binary:1001')"
ROW                              COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:18.352, value=1001 
12345_1516592489001_1  column=ph:o, timestamp=2022-01-24T19:33:35.071, value=1001
1 row(s) in 0.0430 secondshbase(main):016:0> scan's_behavior',FILTER=>"ValueFilter(=,'substring:1002')"
ROW                                           COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:18.352, value=1002
1 row(s) in 0.0200 seconds

(6)获取某个用户行为数据的行键

示例:
获取ID为12345的用户的行为数据行键:
hbase(main):012:0> scan 's_behavior', {FILTER => "PrefixFilter('12345') AND
KeyOnlyFilter()" , LIMIT=>3}ROW                              COLUMN+CELL 
12345_1516592489001_1   column=pc:v, timestamp=2022-01-24T19:49:20.398, value= 
12345_1516592489001_1   column=ph:o, timestamp=2022-01-24T19:33:35.071, value= 
12345_1516592489001_2   column=pc:v, timestamp=2022-01-24T19:35:32.011, value= 
12345_1516592489001_3   column=pc:v, timestamp=2022-01-24T19:35:33.169, value=
3 row(s) in 0.0470 seconds

4,delete命令、deleteall命令和truncate命令

HBase提供了delete、deleteall和truncate命令分别用来删除列、行和表的数据。

(1)delete命令删除某列数据。

格式:
delete '<table>', '<rowkey>, '<列族:列限定符>', '[<time stamp>]'
示例:
使用下面的命令可以删除行键为12345_1516592489001_1的数据行中列族为ph、列限定符为o的数据:
hbase(main):014:0> delete 's_behavior', '12345_1516592489001_1' ,'ph:o'
0 row(s) in 0.0470 seconds

(2)deleteall命令删除整行数据。

格式:
deleteall '<table>', '<rowkey>
示例:
使用下面的命令可以删除了行键为12345_1516592489001_1的数据行:
hbase(main):015:0> deleteall 's_behavior', '12345_1516592489001_1'
0 row(s) in 0.0090 seconds

(3)truncate命令删除整表数据。

格式:
truncate '<table>'示例:
使用下面的命令可以删除用户行为表s_behavior中的所有数据:
hbase(main):016:0> truncate 's_behavior'
Truncating 's_behavior' table (it may take a while): 
- Disabling table... 
- Truncating table...
0 row(s) in 3.4640 seconds

三、其他常用的Shell命令

1,复制状态查看

当HBase开启了集群间复制时,使用status命令可以查看复制的状态,包括复制延迟、待复制日志文件队列大小等。

示例:
hbase(main):017:0> status 'replication'
version 2.4.93 live servers    
master1:       SOURCE: PeerID=1, AgeOfLastShippedOp=4773835960, SizeOfLogQueue=2677,      TimeStampsOfLastShippedOp=Thu Jan 01 08:00:00 CST 1970,       Replication Lag=1521448279318       SINK  :AgeOfLastAppliedOp=0,       TimeStampsOfLastAppliedOp=Mon Dec 25 17:23:16 CST 2017    
slave1:       SOURCE: PeerID=1, AgeOfLastShippedOp=5986238820, SizeOfLogQueue=1665,       TimeStampsOfLastShippedOp=Thu Jan 01 08:00:00 CST 1970,       Replication Lag=1521448277282       SINK  :AgeOfLastAppliedOp=0,       TimeStampsOfLastAppliedOp=Mon Dec 25 11:10:14 CST 2017    
master2:       SOURCE:PeerID=1, AgeOfLastShippedOp=24121908, SizeOfLogQueue=7,       TimeStampsOfLastShippedOp=Mon Mar 19 09:46:36 CST 2018,       Replication Lag=24281038       SINK  : AgeOfLastAppliedOp=0,      TimeStampsOfLastAppliedOp=Tue Mar 13 17:02:06 CST 2018

2,分区拆分

实时在线集群一般会禁用自动拆分以免影响性能,因此当存储文件大小达到某个值后需要手动或者使用自动化程序将分区做拆分。例如,下面的代码将用户行为表s_behavior拆分为两个分区,由于行键以用户ID开始,而用户ID的第一个字符取值范围为0~9,中值为5,因此可以使用5作为拆分后两个分区的分割字符:

hbase(main):018:0>  split 's_behavior','5'
0 row(s) in 0.1060 seconds

3,分区大合并

实时在线集群会禁止大合并,应等到请求的非高峰期来定时做大合并。

示例:
手动触发大合并来压缩表s_behavior的分区,分区名称可以在HBase Web UI找到:
hbase(main):040:0> major_compact's_behavior,,1511878479015.e933a5867bd5253211a4ef90e549192f.'
0 row(s) in 0.0200 seconds

4,负载均衡开关

要对集群进行滚动升级,或者想要关闭自动负载均衡而采用手动负载均衡模式,可以使用下面的命令来开启或者关闭自动负载均衡:

hbase(main):019:0> balance_switch true
true
0 row(s) in 0.0220 secondshbase(main):020:0> balance_switch false
true
0 row(s) in 0.0090 seconds

5,分区手动迁移

如果有几个比较大的或者负载高的分区被分配到同一个分区服务器,那么这台分区服务器可能会成为整个HBase集群的瓶颈,这时候可以手动将这些分区迁移到负载低的分区服务器。

分区迁移命令格式:
move' <EncodedRegionName>',’<destServerName>’
示例:
EncodedRegionName的值是RegionName值的后缀部分,destServerName是在HBase Web UI上的分区服务器的全名。
hbase(main):002:0> move 'e933a5867bd5253211a4ef90e549192f', 'master2,16020,1513049558323'
0 row(s) in 0.0790 seconds

6,HBase运行Ruby脚本

在$HBASE_HOME/bin目录中有几个扩展名为rb的文件,可以直接使用HBase来运行这些Ruby脚本。

格式:
./hbase org.jruby.Main PATH_TO_SCRIPT
示例:
[hadoop@master1 bin]$ ./hbase org.jruby.Main get-active-master.rb
SLF4J: Class path contains multiple 
SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.10.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hbase-2.4.9/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
master1

文章来源:《HBase入门与实践(第2版)》 作者:彭旭

文章内容仅供学习交流,如有侵犯,联系删除哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_267635.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1599. Maximum Profit of Operating a Centennial Wheel【数组,模拟】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

[ 攻防演练演示篇 ] 利用 shiro 反序列化漏洞获取主机权限

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

ATool软件使用实验(22)

实验目的 1、学习ATool软件监控主机行为的原理&#xff1b; 2、学习利用ATool软件监控可疑进程的行为&#xff1b; 3、学习利用ATool软件实现对本机进行文件、注册表管理&#xff1b; 4、学习利用ATool软件实现对本机进行内核模块信息和HOOK信息查看。 预备知识 ATool是针…

测试按方向的分类

按方向分(都是在系统测试阶段测试的) 功能测试&#xff1a;举例说明什么是功能 性能测试 ①压力测试&#xff1a;不断地增加压力&#xff0c;从而找到系统的极限 ②负载测试&#xff1a;系统在极限工作条件下&#xff0c;最多能持续多久——可能发生内存泄漏/溢出&#xff0c;导…

Appium+Python连接真机、跳过登录页、Unexpected error while obtaining UI hierarchy问题

Appium连接真机 使用数据线连接电脑&#xff0c;然后选择文件传输方式 打开手机设置拉至底部&#xff0c;点击关于手机&#xff0c;连续点击7次版本号打开开发者模式 点击设置中的系统与更新&#xff0c;找到开发者选项----> 打开USB调试即可 在终端中输入adb devices确定…

案例解读| 从集中告警平台发展趋势看城商行如何落地数字化转型(二)

上期我们以具体案例入手&#xff0c;分享了集中告警平台到底应该与集中监控平台解耦还是紧绑定等问题。这一期依旧从具体案例切入&#xff0c;跟大家一起探索下告警与服务台的对接过程&#xff0c;以及这个过程中可能产生的问题。上期内容&#xff0c;一键回顾不迷路→案例解读…

angular技术(持续更新)

css类绑定[class.color-blue]"isBlue()" 如果isBlue()返回为true 这里使用color-blue的class样式style样式绑定[style.background-color]"canclick ? blue: red" 组件与模块模块的元数据*declarations: 用于指定属于这个模块的视图类&#xff08;View Cla…

YOLOV5中添加CBAM模块详解——原理+代码

目录一、前言二、CAM1. CAM计算过程2. 代码实现3. 流程图三、SAM1. SAM计算过程2. 代码实现3. 流程图四、YOLOv5中添加CBAM模块参考文章一、前言 由于卷积操作通过融合通道和空间信息来提取特征&#xff08;通过NNNNNN的卷积核与原特征图相乘&#xff0c;融合空间信息&#xff…

代码随想录-51-110.平衡二叉树

目录前言题目1.求高度和深度的区别节点的高度节点的深度2. 本题思路分析&#xff1a;3. 算法实现4. pop函数的算法复杂度5. 算法坑点前言 在本科毕设结束后&#xff0c;我开始刷卡哥的“代码随想录”&#xff0c;每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专…

学习笔记:基于SpringBoot的牛客网社区项目实现(二)之Spring MVC入门

1.1 函数的返回值为空&#xff0c;因为可以使用response对象向浏览器返回数据。声明了request对象和response对象&#xff0c;dispatcherservlet自动将这两个对象传入 RequestMapping("/http")public void http(HttpServletRequest request, HttpServletResponse re…

不会吧,难道真的有程序员不知道怎么接单赚钱吗?

随着大环境逐渐转好&#xff0c;跳槽、新工作、兼职等等机会都浮出水面。抛开跳槽、新工作不谈&#xff0c;今天就专门来说说程序员接单赚钱有哪些靠谱的平台。 首先分享一波关于接私活有哪些注意事项&#xff0c;给大家提个醒&#xff0c;避免盲目入坑。 一、程序员接单须知…

深度学习知识点全面总结_深度学习总结

深度学习知识点全面总结_深度学习总结 神经网络与深度学习结构(图片选自《神经网络与深度学习》一邱锡鹏) 目录 常见的分类算法 一、深度学习概念 1.深度学习定义 2.深度学习应用 3.深度学习主要术语 二、神经网络基础 1. 神经网络组成 感知机 多层感知机 3.前向传播…

复位和时钟控制(RCC)

目录 复位 系统复位 电源复位 备份区复位 时钟控制 什么是时钟&#xff1f; 时钟来源 二级时钟源: 如何使用CubeMX配置时钟 复位 系统复位 当发生以下任一事件时&#xff0c;产生一个系统复位&#xff1a;1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWD…

项目实战典型案例27——单表的更新接口有9个之多

单表的更新接口有9个之多一&#xff1a;背景介绍环境准备引入pom依赖配置数据库连接mybatis配置文件Mybatis的配置类编写通用的更新语句可以覆盖的更新接口暂时无法覆盖的接口测试四&#xff1a;总结五&#xff1a;升华一&#xff1a;背景介绍 本篇博客是对项目开发中出现的单…

197.Spark(四):Spark 案例实操,MVC方式代码编程

一、Spark 案例实操 1.数据准备 电商网站的用户行为数据,主要包含用户的 4 种行为:搜索,点击,下单,支付 样例类: 2. Top10 热门品类 先按照点击数排名,靠前的就排名高;如果点击数相同,再比较下单数;下单数再相同,就比较支付数。 我们有多种写法,越往后性能越…

k8s学习之路 | k8s 工作负载 ReplicaSet

文章目录1. ReplicaSet 基础概念1.1 RS 是什么&#xff1f;1.2 RS 工作原理1.3 什么时候使用 RS1.4 RS 示例1.5 非模板 Pod 的获得1.6 编写 RS1.7 使用 RS1.8 RS 替代方案2. ReplicaSet 与 ReplicationController2.1 关于 RS、RC2.2 两者的选择器区别2.3 总结1. ReplicaSet 基础…

yii2项目使用frp https2http插件问题

yii2内网项目&#xff0c;使用frp进行内网穿透&#xff0c;使用 https2http插件把内网服务器http流量转成https&#xff0c;会存在一个问题&#xff1a;当使用 $this->redirect(...) 或 $this->goHome() &#xff08;其实用的也是前者&#xff09;等重定向时&#xff0c;…

物联网毕设 -- 智能厨房监测系统(改)

前言 在家庭生活中&#xff0c;厨房是必不可少的&#xff0c;所以厨房的安全问题关乎着我们大家的生命&#xff0c;所以提出智能厨房监测系统&#xff0c;目的就是为我们减少不必要的安全问题 ⚠️⚠️&#xff08;本文章仅提供思路和实现方法&#xff0c;并不包含代码&#x…

javaWeb在线考试系统

一、项目简介 本项目是一套javaWeb在线考试系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse 确保…

DBeaver连接mysql、oracle数据库

1. DBeaver连接mysql 1&#xff09; 下载DBeaver https://dbeaver.io/download/&#xff0c;并安装 2) 新建数据库连接 3&#xff09;选择mysql驱动程序 4&#xff09;填写连接设置内容 5&#xff09;点击 “编辑驱动设置”&#xff0c;并填写相关信息 6&#xff09;选择本地…