达蒙数据库使用

镜像下载

链接

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

posted @ 2023-09-08 17:44  一年`  阅读(98)  评论(0编辑  收藏  举报