当前位置: 首页 > article >正文

H2 Database安装部署

H2 Database

H2 Database官网

H2 中文文档

安装部署H2

java版本要高于java 11

## 下载java21
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz

[root@localhost ~]# tar xf  jdk-21_linux-x64_bin.tar.gz -C /usr/local/
[root@localhost ~]# vim /etc/profile

export JAVA_HOME=/usr/local/jdk-21.0.5
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

## 下载h2安装包
wget https://github.com/h2database/h2database/releases/download/version-2.3.232/h2-2024-08-11.zip

## 创建数据目录
mkdir -p /data/h2

## 启动h2
nohup java -cp h2-2.3.232.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpPort 9092 -tcpAllowOthers -pg -pgAllowOthers -pgPort 5432 -baseDir /data/h2/ &

## 端口
root@PostgreSQL bin]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1353/sshd: /usr/sbi 
tcp6       0      0 :::9876                 :::*                    LISTEN      9806/java           
tcp6       0      0 :::22                   :::*                    LISTEN      1353/sshd: /usr/sbi 
tcp6       0      0 :::5432                 :::*                    LISTEN      13432/java          
tcp6       0      0 :::10909                :::*                    LISTEN      10001/java          
tcp6       0      0 :::10911                :::*                    LISTEN      10001/java          
tcp6       0      0 :::10912                :::*                    LISTEN      10001/java          
tcp6       0      0 :::9092                 :::*                    LISTEN      13432/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      10001/java          
tcp6       0      0 :::8081                 :::*                    LISTEN      10001/java          
tcp6       0      0 :::8082                 :::*                    LISTEN      13432/java  

h2启动参数说明

参数描述
-web启动带有 H2 控制台的 web 服务器
-webAllowOthers允许其他计算机连接到 web 服务器
-tcp启动 TCP 服务器
-tcpPort <port>设置 TCP 服务器的端口
-tcpAllowOthers允许其他计算机连接到 TCP 服务器
-pg启动 PG 服务器(PostgreSQL 兼容)
-pgAllowOthers允许其他计算机连接到 PG 服务器
-pgPort <port>设置 PG 服务器的端口
-baseDir <dir>设置 H2 数据库的基础目录,所有数据库文件将存储在这个目录下(经过测试发现该参数不起作用)

官网介绍

连接H2

使用控制台连接

[root@PostgreSQL bin]# java -cp h2-2.3.232.jar org.h2.tools.Shell

Welcome to H2 Shell 2.3.232 (2024-08-11)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       
[Enter]   org.h2.Driver
Driver    
[Enter]   
User      
Password  Password  ><
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

sql> 

参数说明

参数描述
-help-?打印可用选项列表
-url "<url>"数据库的 URL(例如:jdbc:h2:…)
-user <user>用户名
-password <pwd>密码
-driver <class>要使用的 JDBC 驱动类(大多数情况下不需要指定)
-sql "<statements>"执行 SQL 语句并退出
-properties "<dir>"从指定目录加载服务器属性

从日志中可以看到连接地址

TCP server running at tcp://192.168.202.159:9092 (others can connect)
PG server running at pg://192.168.202.159:5432 (others can connect)
Web Console server running at http://192.168.202.159:8082 (others can connect)
创建新一个新数据库
缺省情况下,如果 URL 指定的数据库并不存在,一个新的空的数据库将被自动的创建。创建数据库的用户自动成为这个数据库的超级管理员。

自动创建新库也可以通过特殊的 URL 进行屏蔽

介绍

创建表

CREATE [ CACHED | MEMORY ] [ { TEMP } | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] [schemaName.]tableName
[ ( { columnName [columnDefinition] | tableConstraintDefinition } [,...] ) ]
[ ENGINE tableEngineName ]
[ WITH tableEngineParamName [,...] ]
[ NOT PERSISTENT ] [ TRANSACTIONAL ]
[ AS ( query ) [ WITH [ NO ] DATA ] ]
sql> CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255));
(Update count: 0, 6 ms)
sql> show tables;
TABLE_NAME | TABLE_SCHEMA
TEST       | PUBLIC
(1 row, 24 ms)
sql> 

  • 缓存表(普通表的默认类型)是持久化的,其行数不受主内存限制。

  • 内存表是持久化的,但索引数据存储在主内存中,这意味着内存表不应过大。

查看表的列

SHOW { SCHEMAS | TABLES [ FROM schemaName ] |
COLUMNS FROM tableName [ FROM schemaName ] }
sql> show columns from test;
FIELD | TYPE                   | NULL | KEY | DEFAULT
ID    | INTEGER                | NO   | PRI | NULL
NAME  | CHARACTER VARYING(255) | YES  |     | NULL
(2 rows, 11 ms)

插入数据

CREATE TABLE timeseries_table (
        id SERIAL PRIMARY KEY,
        timestamp TIMESTAMP,
        data_column  DOUBLE
    );

INSERT INTO timeseries_table (timestamp, data_column)
SELECT
    DATEADD('SECOND', CAST(floor(random() * 86400) AS INT), CURRENT_TIMESTAMP),  -- 当前时间到明天同一时间的随机时间
    floor(random() * 100000)  -- 随机数据列值
FROM generate_series(1, 1000000);

创建用户

CREATE USER [ IF NOT EXISTS ] newUserName
{ PASSWORD string | SALT bytes HASH bytes } [ ADMIN ]
-- 创建管理员用户
CREATE USER h2 PASSWORD 'h2' ADMIN;

-- 查看用户
sql> select * from information_schema.users;
USER_NAME | IS_ADMIN | REMARKS
          | TRUE     | null
H2        | TRUE     | null
(2 rows, 0 ms)

-- 查看参数配置
sql> select * from information_schema.settings limit(3);
SETTING_NAME       | SETTING_VALUE
CREATE_BUILD       | 232
info.BUILD_ID      | 232
info.VERSION_MAJOR | 2
(3 rows, 1 ms)
sql> 

-- 嵌入式连接、他会自动创建一个数据库和用户,直接访问的是本地文件,有个独占排他的功能(可以不限制是否是在数据库的base目录下)
java -cp h2-2.3.232.jar org.h2.tools.Shell -url "jdbc:h2:/root/tmp/h2/data" -user h2 -password h2

Welcome to H2 Shell 2.3.232 (2024-08-11)
Exit with Ctrl+C
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           切换结果显示模式(在“结果列表模式”和“堆栈跟踪模式”之间切换)
maxwidth       设置最大列宽(默认值为 100)
autocommit     启用或禁用自动提交
history        显示最近执行的 20 条语句
quit or exit   关闭连接并退出

创建数据库(不能再远程创建,只能由DBA给创建好)

[root@PostgreSQL bin]# java -cp h2-*.jar org.h2.tools.Shell

Welcome to H2 Shell 2.3.232 (2024-08-11)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       jdbc:h2:/data/h2/test
[Enter]   org.h2.Driver
Driver    org.h2.Driver
[Enter]   
User      sa
Password  Password  >>><
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

sql> 


[root@PostgreSQL bin]# java -cp h2-*.jar org.h2.tools.Shell

Welcome to H2 Shell 2.3.232 (2024-08-11)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       jdbc:h2:/data/h2/fbase
[Enter]   org.h2.Driver
Driver    org.h2.Driver
[Enter]   
User      sa
Password  Password  >>><
Type the same password again to confirm database creation.
Password  Password  >>><
Connected

-- 使用远程连接
java -cp h2-*.jar org.h2.tools.Shell -url "jdbc:h2:tcp://192.168.202.159:9092/test" -user sa -password sa

java -cp h2-*.jar org.h2.tools.Shell -url "jdbc:h2:tcp://192.168.202.159:9092/fbase" -user sa -password sa

使用web控制台的连接
在这里插入图片描述

在这里插入图片描述


http://www.kler.cn/a/522284.html

相关文章:

  • Vue.js `setup()` 函数的使用
  • Kiwi 安卓浏览器本月停止维护,扩展功能迁移至 Edge Canary
  • 【C语言练习题】找出不是两个数组共有的元素
  • 省市区三级联动
  • 三角形的最大周长(LeetCode 976)
  • 2218. 从栈中取出 K 个硬币的最大面值和
  • VMware 中Ubuntu无网络连接/无网络标识解决方法【已解决】
  • PHP Error处理与优化指南
  • volatile之四类内存屏障指令 内存屏障 面试重点 底层源码
  • 多模态论文笔记——TECO
  • 已解决:Win10任务状态栏卡死点击无响应的解决方案
  • 【SAP-PP】生产订单和计划订单
  • DeepSeek-R1试用
  • AI在Facebook平台中的安全应用探索
  • JAVA 接口、抽象类的关系和用处 详细解析
  • Python-基础环境(01) 虚拟环境,Python 基础环境之虚拟环境,一篇文章助你完全搞懂!
  • 通过案例研究二项分布和泊松分布之间关系(2)
  • Lucene中DocValues 和 Stored Fields 的用法
  • 【Unity3D】Tilemap俯视角像素游戏案例
  • 字节启动AGI长期研究计划,代号Seed Edge
  • Nacos未授权新建用户漏洞(/nacos/v1/auth/users)
  • 深入理解JWT及其应用
  • 简易CPU设计入门:控制总线的剩余信号(一)
  • 粒子群算法 笔记 数学建模
  • 真正理解std::move
  • < OS 有关 > 阿里云 几个小时前 使用密钥替换 SSH 密码认证后, 发现主机正在被“攻击” 分析与应对