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

达梦:【1】达梦常用操作

达梦:【1】达梦常用操作

  • 一、登录达梦
  • 二、创建表空间及用户模式
  • 三、查看表空间、用户、模式
  • 四、系统查询
  • 五、角色管理
  • 六、数据库导入导出
  • 七、达梦数据库汉字存储
  • 八、根据表生成ctl控制文件
  • 九、本地连多台数据库(RAC)

一、登录达梦

./disql username/password@ip:port
> select * from dual;

二、创建表空间及用户模式

1、一个用户下可以有多个模式名,一个模式只能跟着一个用户,创建用户会自己生成模式,先创建表空间,再创建用户绑定表空间

create tablespace "表空间名称" datafile '表空间名称.DBF' size 32 CACHE = NORMAL;  --创建表空间
create user 用户名称 identified by 用户密码 default tablespace 表空间名称;  --创建用户

2、创建模式

CREATE SCHEMA "模式名称" AUTHORIZATION "SYSDBA";

三、查看表空间、用户、模式

1、查看表空间

select * from dba_data_files;  --查看所有表空间
select * from dba_free_files;  --查看所有剩余表空间

2、查看用户

select * from dba_users;  --查看所有用户

3、查看模式

SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH'  --查询所有的模式名

4、查看模式所属用户

selectSCH_OBJ.NAME   ,SCH_OBJ.ID     ,SCH_OBJ.CRTDATE,USER_OBJ.NAME
from(select NAME, ID, PID, CRTDATE from SYS.SYSOBJECTS where TYPE$='SCH')SCH_OBJ,(select NAME, ID from SYS.SYSOBJECTS where TYPE$='UR' and SUBTYPE$='USER')USER_OBJ
whereSCH_OBJ.PID=USER_OBJ.ID
ORDER BYSCH_OBJ.NAME;

5、查看用户所属角色

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='用户名'

四、系统查询

1、查看达梦版本

select name,create_time from v$database;

2、查看数据库大小写是否敏感

SELECT CASE_SENSITIVE();

3、查看用户权限角色

select * from DBA_SYS_PRIVS ;

4、查看所有用户

select username from dba_users;

5、查看表空间

select TABLESPACE_NAME from user_tablespaces;

6、查看指定表字段

select * from all_tab_columns where owner='用户名' and Table_Name='表名';

五、角色管理

1、查询角色的权限

select * from dba_sys_privs where grantee='角色名';

2、创建角色

CREATE ROLE 角色名;

3、给角色授予resource和public的权限

GRANT CREATE TABLE,CREATE INDEX TO 角色名;

4、给角色授予创建表和索引的权限

GRANT CREATE TABLE,CREATE INDEX TO 角色名;

5、给角色授予查询DMHR模式下CITY表的查询权限

GRANT SELECT ON DMHR.CITY TO 角色名;

6、授予角色的权限给用户

GRANT 角色名 TO 用户名;

7、回收用户的角色权限

REVOKE 角色名 FROM 用户名;

8、启用角色

sp_set_role('角色名',1);

9、禁用角色

sp_set_role('角色名',0);

10、删除角色

DROP ROLE 角色名;

六、数据库导入导出

1、数据库导出

./dexp SYSDBA/SYSDBA@IP:PORT directory=/data/sdb/snn file=imp_exp.dmp schemas=fuck
file:导出文件名
directory:导出文件存放路径
schemas:导出模式名

2、数据库导入

./dimp SYSDBA/SYSDBA@IP:PORT file=/data/sdb/snn/imp_exp.dmp remap_schema=fuck:
file:导入文件路径及名称
remap_schema:原导出模式名:待导入模式名

七、达梦数据库汉字存储

	UNICODE_FLAG和LENGTH_IN_CHAR两个跟字符集相关的参数
  • UNICODE_FLAG
    此参数表示了数据库中所有数据的字符集,包括数据字典的字符集,需要注意的是,数据库一旦初始化完成,字符集就无法修改,可以用select Unicode查询当前数据库的字符集,0代表GB18030,1代表utf-8LENGTH_IN_CHAR
  • LENGTH_IN_CHAR
    此参数决定了数据库中的varchar类型对象的长度是否以字符为单位,取值1则是设置以字符为单位,将存储长度值按照理论字符长度进行放大。取值为0,则所有varchar类型对象长度以字节为单位

1、场景一

Unicode_flag和length_in_char都设置为0,字符集GB18030,varchar长度以字节为单位
GB18030字符集下,一个汉字需要占用两个字节,所以varchar(3)可以插入一个汉字加上一个半角字符,但是无法插入两个汉字。

2、场景二

UNICODE_FLAG=1,LENGTH_IN_CHAR=0
字符集为utf-8varchar长度以字节为单位
Utf-8字符集的情况下,一个汉字需要占用三个字节,所以varchar(3)只能插入一个汉字。

3、场景三

UNICODE_FLAG=0,LENGTH_IN_CHAR=1
字符集为GB18030,varchar长度以字节为单位
在length_in_char=1的情况下,varchar的实际可存储字节数会按一定比例放大,所以在使用GB18030的时候,varchar(3)实际可以存储3个汉字,也就是3*2个字节的数据

4、场景四

UNICODE_FLAG=1,LENGTH_IN_CHAR=1
字符集为utf-8varchar长度以字符为长度
这里我们会发现一个奇怪的情况,明明设置是 varchar(3),为什么可以插入 4 个汉字呢。这是因为在 DM7 中数据库实际存储数据是以字节为单位。在 lengtg_in_char=1 且字符集为 utf-8 的时候,VARCHAR 类型对象的实际存放的最大长度是 VARCHAR 类型定义的长度*4 字节。

也就是说,这里一个 varchar(3) 的结构可以存放的数据为 3*4=12 个字节。然而事实上 UTF-8 中的一个汉字一般只用占用 3 个字节,所以这里我们可以插入 12/3=4 个汉字

总结:当 LENGTH_IN_CHAR=0 的情况下,varchar() 的长度是以字节数为单位。这时我们只需要考虑汉字和全角字符所占用字节数,其中 gb18030 的一个汉字是两个字节,utf-8 的一个汉字一般是三个字节。如果插入数据的总字节数大于 varchar 定义的长度,则会插入失败。

当 LENGTH_IN_CHAR=1 的情况下,varchar() 所能存储的字节数将会按照一定比例扩展。字符集为 gb18030 时 varchar 的字节数等于定义长度 *2,字符集为 utf-8 时 varchar 的字节数为定义长度 *4

八、根据表生成ctl控制文件

装载数据经常会使用到ctl控制文件进行状态,批量生成表对应控制文件
1、ctl控制文件的framemark模板[dmCtl.ftl]

LOAD DATA
INFILE '*' STR X '0A'
REPLACE
INTO TABLE ${schemaName}
FIELDS '${middleDiv}'
TRAILING NULLCOLS
(
${fieldDelimiter}
)

2、生成服务类

package com.yzj.plutus.executor.service.Impl;import cn.hutool.core.io.FileUtil;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Service;import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.*;/*** 根据数据库表生成ctl控制文件*/
@Slf4j
@RequiredArgsConstructor
@Service
public class GenerateCtlFileServiceImpl {private final GenerateCtlMapper generateCtlMapper;private final Config config;private final freemarker.template.Configuration configuration;public void generateCtl(String tableName) throws IOException, TemplateException {//1.获取表字段List<String> fields = generateCtlMapper.generateCtl(config.getSchemaName(), tableName);StringBuffer sb = new StringBuffer();for (int i = 0; i < fields.size(); i++) {//1.1、第一位是ID不需要if (i == 0 && "ID".equalsIgnoreCase(fields.get(i))){continue;}//1.2、最后一位不加",",但是增加"sysdate"【入库时间[个性化]】if (i == fields.size() - 1){sb.append(fields.get(i)).append(" \"SYSDATE\"");} else if (i == fields.size() - 2) {//1.3、倒数第二位加" TERMINATED BY ''"sb.append(fields.get(i)).append(" TERMINATED BY '").append(config.getEndDiv()).append("',");}else {sb.append(fields.get(i)).append(",");}}Map<String, Object> data = new HashMap<>();data.put("schemaName", tableName);data.put("fieldDelimiter", sb.toString());data.put("middleDiv", config.getMiddleDiv());//2、拼接ctl模板需要部分configuration.setDirectoryForTemplateLoading(new File(Objects.requireNonNull(this.getClass().getClassLoader().getResource("template")).getPath()));Template template = configuration.getTemplate(config.getTemplateCtlFileName());//3、生成ctl文件StringWriter sw = new StringWriter();template.process(data, sw);log.info("拼接后的数据为:【{}】", sw.toString());FileUtil.writeLines(Collections.singletonList(sw.toString()), new File(config.getCtlFilePath() + File.separatorChar + tableName + ".ctl"), "UTF-8");log.info("数据库表【{}】的ctl控制文件生成完成, 存放路径:【{}】", config.getSchemaName() + "." + tableName, config.getCtlFilePath());}@Mapperpublic interface GenerateCtlMapper{@Select("SELECT A.COLUMN_NAME FROM ALL_TAB_COLUMNS A WHERE A.OWNER=#{schemaName} AND A.TABLE_NAME=#{tableName}")List<String> generateCtl(@Param("schemaName") String schemaName, @Param("tableName") String tableName);}@Data@Configurationpublic class Config{private String schemaName;/*** 字段分隔符*/private char middleDiv = '\u0003';/*** 字段结尾符*/private char endDiv = '\u0002';/*** CTL模板文件名称*/private String templateCtlFileName;/*** ctl文件存放路径*/private String ctlFilePath;}
}

九、本地连多台数据库(RAC)

1、服务器创建文件【/etc/dm_svc.conf】,写入如下内容

TIME_ZONE=(480)
LANGUAGE=(cn)
SUPERIP=(123.123.123.1:5236,123.123.123.2:5236,123.123.123.3:5236)#EP_SGLJYTOR 0:均匀分布1:定向连接服务名的第一个IP,
#每次定向连接服务名的第一个IP。当IP1发生故障,间隔1s进行重连,尝试60次,若无
#法连接,再自动连接IP2。若IP2先起来,IP1后起来。因为AUT0_RECONNECT=(1),所以连
#接在IP2的连接不会切回IP1上。[SUPERIP]
LOGIN_MODE=(1)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SGLJYTOR=(1)
AUTO_RECONNECT=(1)

2、应用连接配置

<driver>dm.jdbc.driver.DmDriver</driver>
<url>jdbc:dm://SUPERIP</url>

3、应用连接达梦数据库【指定schema[1用户多个schema]】

# 达梦 模式名就相当于库名
# 写法一【本人使用此种】url: jdbc:dm://localhost:5236?schema=PERSON&compatibleMode=mysql&characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
#写法二【尝试过失败】#url: jdbc:dm://localhost:5236/PERSON&compatibleMode=mysql&characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

相关文章:

达梦:【1】达梦常用操作

达梦&#xff1a;【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦 ./disql username/passwordip:por…...

数字人透明屏幕的技术原理是什么?

数字人透明屏幕的技术原理主要包括人脸识别和全息影像技术。其中&#xff0c;人脸识别技术是通过摄像头捕捉游客的面部表情和动作&#xff0c;并将其转化为数据指令&#xff0c;以便与数字人物进行互动。而全息影像技术则是利用透明屏幕&#xff0c;通过全息投影的方式将数字人…...

提升APP软件的用户体验方法

提升APP软件的用户体验是确保用户满意度和应用成功的关键。以下是一些方法&#xff0c;可以帮助提升APP的用户体验&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.简洁的用户界面设计&#xff1a; …...

JVM运行时数据区域、对象内存分配、内存溢出异常总结

深入理解java虚拟机第二章 二、运行时数据区域2.2.1 程序计数器2.2.2 Java虚拟机栈2.2.3 本地方法栈2.2.4 Java堆2.2.5 方法区2.2.6 运行时常量池2.2.7 直接内存 三、HotSpot虚拟机对象解密2.3.1 对象的创建对象如何分配内存&#xff1f;对象的创建如何处理并发问题&#xff1f…...

【C++设计模式】单例模式singleton

C 设计模式–单例模式singleton 单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例&#xff0c;并提供一个全局访问点。 优点&#xff1a;内存中只有一个实例&#xff0c;减少内存开销&#xff1b;避免对资源多重占用&#xff1b;设置全局访问点&#xff0c;严…...

CVPR 2023 精选论文学习笔记:Post-Training Quantization on Diffusion Models

基于MECE原则,我们给出以下四种分类依据: 1. 模型类型 生成模型用于生成与其训练数据相似的新数据。它们通常用于图像生成、文本生成和音乐生成等任务。语言模型用于理解和生成人类语言。它们通常用于机器翻译、聊天机器人和文本摘要等任务。其他模型用于各种任务,例如图像…...

Python基础语法之学习字符串快速格式化

Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…...

Ubuntu22.04 server版本关闭DHCP,手动设置ip

在Ubuntu 22.04 中&#xff0c;网络配置已迁移到 Netplan&#xff0c;因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤&#xff1a; 打开终端&#xff0c;使用 root 权限或 sudo 执行以下命令&…...

贪心算法(新坑)

贪心入门 概述&#xff1a; 贪心算法是一种在每一步选择中都采取当前最优解的策略&#xff0c;希望最终能够得到全局最优解的算法。简单来说&#xff0c;它会不断地做出局部最优的选择&#xff0c;相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…...

C 语言头文件

C 语言头文件 头文件是扩展名为 .h 的文件&#xff0c;包含了 C 函数声明和宏定义&#xff0c;被多个源文件中引用共享。有两种类型的头文件&#xff1a;程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件&#xff0c;需要使用 C 预处理指令 #include 来引用它…...

MySQL中自增id用完怎么办?

MySQL中自增id用完怎么办&#xff1f; MySQL里有很多自增的id&#xff0c;每个自增id都是定义了初始值&#xff0c;然后不停地往上加步长。虽然自然数是没有上限的&#xff0c;但是在计算机里&#xff0c;只要定义了表示这个数的字节长度&#xff0c;那它就有上限。比如&#…...

C语言常见算法

算法&#xff08;Algorithm&#xff09;&#xff1a;计算机解题的基本思想方法和步骤。算法的描述&#xff1a;是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述&#xff0c;包括需要什么数据&#xff08;输入什么数据、输出什么结果&#xff09;、采用什么结构、使…...

0-1背包的初始化问题

题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下&#xff0c;容量为j时能放物品的数量&#xff08;这道题歌曲数量对应物品数量&#xff0c;容量对应时间&#xff09;。 技巧&#xff08;收获&#xff09; 二维dp数组可以视情况优化为一维dp数组…...

API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传

实现 //时间戳13位毫秒private function getMillisecond() {list($s1,$s2) explode( ,microtime());return (float)sprintf(%.0f,(floatval($s1) floatval($s2)) * 1000);}// 组装参数private function gysscPost1($url,$data){// $data[timestamp] 1694402111964;$data[tim…...

C语言-求阶乘序列前N项和

本题要求编写程序&#xff0c;计算序列 1!2!3!⋯ 的前N项之和。 输入格式: 输入在一行中给出一个不超过12的正整数N。 输出格式: 在一行中输出整数结果。 输入样例: 5输出样例: 153 #include "stdio.h" int main(){int n;int sum 0;scanf("%d",&a…...

3:kotlin 逻辑控制(Control flow)

像其他语言一样&#xff0c;kotlin也有循环和逻辑控制 条件判断&#xff08;Conditional expressions&#xff09; kotlin使用if和when来进行条件判断 如果纠结选择if还是when&#xff0c;建议使用when&#xff0c;因为它更能提高程序的健壮性 if 普通写法 fun main() {val…...

Linux系统之一次性计划任务at命令的基本使用

Linux系统之一次性计划任务at命令的基本使用 一、at命令介绍二、at命令的使用帮助2.1 at命令的help帮助信息2.2 at命令的语法解释 三、at命令的日常使用3.1 立即执行一次性任务3.2 指定时间执行一次性任务3.3 查询计划任务3.4 其他指定时间用法3.5 删除已经设置的计划任务3.6 显…...

记录:Unity脚本的编写8.0

目录 需求分析设计GUI包含账号和密码输入栏&#xff0c;包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo&#xff0c;登录和注册的实现&#xff08;包括GUI和数据库操控&#xff09; 需求分析 自行设计GUI&#xff0c;要求 1.包…...

OpenCV | 模版匹配

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像&#xff0c;模版在原图像上从原点开始滑动&#xff0c;计算模版与&#xff08;图像被模版覆盖的地方&#xff…...

【算法刷题】Day7

文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目&#xff0c;首先看一下题干的要求&#xff0c;是在原数组内进行操作&#xff0c;平切保持非零元素的相对顺序 这个时候我们看到了示例一&#xff1a; [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...