达梦:【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-8,varchar长度以字节为单位
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-8,varchar长度以字符为长度
这里我们会发现一个奇怪的情况,明明设置是 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】达梦常用操作
达梦:【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦 ./disql username/passwordip:por…...

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

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

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 对象的创建对象如何分配内存?对象的创建如何处理并发问题?…...
【C++设计模式】单例模式singleton
C 设计模式–单例模式singleton 单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;设置全局访问点,严…...
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 中,网络配置已迁移到 Netplan,因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤: 打开终端,使用 root 权限或 sudo 执行以下命令&…...

贪心算法(新坑)
贪心入门 概述: 贪心算法是一种在每一步选择中都采取当前最优解的策略,希望最终能够得到全局最优解的算法。简单来说,它会不断地做出局部最优的选择,相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…...
C 语言头文件
C 语言头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它…...

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

C语言常见算法
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使…...

0-1背包的初始化问题
题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维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项和
本题要求编写程序,计算序列 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)
像其他语言一样,kotlin也有循环和逻辑控制 条件判断(Conditional expressions) kotlin使用if和when来进行条件判断 如果纠结选择if还是when,建议使用when,因为它更能提高程序的健壮性 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包含账号和密码输入栏,包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo,登录和注册的实现(包括GUI和数据库操控) 需求分析 自行设计GUI,要求 1.包…...

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

【算法刷题】Day7
文章目录 283. 移动零1089. 复写零 283. 移动零 原题链接 看到题目,首先看一下题干的要求,是在原数组内进行操作,平切保持非零元素的相对顺序 这个时候我们看到了示例一: [ 0, 1, 0, 3,12 ] 这个时候输出成为了 [ 1, 3, 12, 0, …...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

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

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 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智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...