达蒙数据库使用
镜像下载
docker run -d --name dameng \
--restart always \
-p 5236:5236 \
--network free \
-e PAGE_SIZE=16 \
-e LD_LIBRARY_PATH="/opt/dmdbms/bin" \
-e EXTENT_SIZE="32" \
-e BLANK_PAD_MODE="1" \
-e LOG_SIZE="1024" \
-e UNICODE_FLAG="1" \
-e LENGTH_IN_CHAR="1" \
-e INSTANCE_NAME="dm8_01" \
--memory 1024m \
-v $(pwd)/opt_dmdbms_data:/opt/dmdbms/data \
dm8_single:dm8_20230808_rev197096_x86_rh6_64
docker-compose.yml
dameng:
# default pwd. SYSDBA / SYSDBA001
image: dm8_single:dm8_20230808_rev197096_x86_rh6_64
container_name: dameng
ports:
- "5236:5236"
networks:
- free
environment:
PAGE_SIZE: 16
LD_LIBRARY_PATH: "/opt/dmdbms/bin"
EXTENT_SIZE: "32"
BLANK_PAD_MODE: "1"
LOG_SIZE: "1024"
UNICODE_FLAG: "1"
LENGTH_IN_CHAR: "1"
INSTANCE_NAME: "dm8_01"
restart: always
mem_limit: '1024m'
volumes:
- "./dameng/opt_dmdbms_data:/opt/dmdbms/data"
官方镜像里安装了一些无用组件,有空重新构建一版(底包使用ubuntu)。
空间模块扩展支持
参考https://zhuanlan.zhihu.com/p/592720046
执行即可。
-- SP_INIT_GEO_SYS(1);
SP_INIT_GEO2_SYS(1);
数据库安装
https://blog.csdn.net/songdancer/article/details/108793190
https://blog.csdn.net/weixin_47343544/article/details/128840070
创建LEARN
数据库并赋予权限给ROOT
用户,和mysql一样,方便连接。
CREATE SCHEMA "LEARN" AUTHORIZATION "ROOT";
关闭登陆时SSL,需要修改dm.ini
文件,重启生效。
ENABLE_ENCRYPT = 0
集成springboot配置
安装文件自带驱动,支持LocalDateTime,可解包查看实际版本。
参考 https://zhuanlan.zhihu.com/p/375455795
<!-- 达梦数驱动 搭配MP测试过,支持LocalDateTime-->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.2.141</version>
</dependency>
datasource:
url: "jdbc:dm://localhost:5236/SYSDBA"
username: "SYSDBA"
password: "SYSDBA001"
driver-class-name: dm.jdbc.driver.DmDriver
遇到关键字冲突,字段可以加双引号,表名必须更换。
可使用表名前缀和字段名前缀避免。
测试使用的版本号
<spring-boot.version>3.0.2</spring-boot.version>
<spring-cloud.version>2022.0.0</spring-cloud.version>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
CTE查询
WITH cte(c_id, c_class_id, c_class_pid, c_name) AS (
SELECT c_id, c_class_id, c_class_pid, c_name
FROM T_SYS_CLASS base WHERE C_DB_STATUS = 0 AND base.c_id = 1
UNION ALL
SELECT tmp.c_id, tmp.c_class_id, tmp.c_class_pid, tmp.c_name
FROM T_SYS_CLASS tmp JOIN cte ON tmp.c_class_pid = cte.c_class_id AND tmp. C_DB_STATUS = 0
)
SELECT c_id, c_class_id, c_class_pid, c_name FROM cte;
关联更新
最新版是支持关联更新的,旧版不支持。
UPDATE table_nameA tna
SET tna.columA = (
SELECT columB FROM table_nameB LIMIT 1
)
允许将显式值插入表的自增列中
set identity_insert table_name on;
教程
https://blog.csdn.net/zhdong00/article/details/122936928
https://blog.csdn.net/weixin_39724194/article/details/127632374
如有错漏,欢迎指正!谢绝转载。