-
2022-01-11 10:32:06
使用shell脚本执行达梦数据库sql脚本文件
最近遇到一个问题,需要给现场实施人员准备数据库执行脚本,但需要进行隔离操作,避免现场人员误操作修改了sql,导致出现其他问题。达梦数据库在网上的资料真是少之又少,但是发现大多数达梦语法描述为同oracle,嗯??……
方式一
当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误操作
方式二
使用shell脚本执行sql
1. 先找到达梦数据库安装位置吧
[root@localhost ~]# ss -nlp |grep 5236 tcp LISTEN 0 128 [::]:5236 [::]:* users:(("dmserver",pid=103380,fd=4)) [root@localhost ~]# ps -ef|grep dmserver root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver dmdba 103380 1 8 13:36 ? 00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/dm.ini -noconsole
2. 直接在linux上执行shell命令执行sql脚本
2.1 # disql username/password:port
使用这个命令可以进入sql控制台
[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 5.524(ms) disql V8 SQL>
进入SQL>后:
- 直接输入sql语句,使用英文分号结尾,回车执行。
- 使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)
- 使用“start sql文件路径”,可以执行sql脚本文件。
2.2 # disql username/password:port `sql文件位置
使用这个命令可以执行sql脚本
[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/test.sql [root@localhost sql]#
但需注意
- 这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。
- 这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。
2.3 达梦sql脚本注意事项
目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束
例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。
[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 6.121(ms) disql V8 SQL> create schema test; 2 3 / 操作已执行 已用时间: 26.698(毫秒). 执行号:700604. SQL>
sql脚本示例:
-- 创建schema CREATE SCHEMA DB_ZFBA_MOBILE; /
-- 执行过程 begin if exists(select 1 from DBA_TAB_COLUMNS where OWNER='DB_ZFBA_MOBILE' AND TABLE_NAME='T_ZJTQD') then EXECUTE immediate 'drop table DB_ZFBA_MOBILE.T_ZJTQD'; end if; end; / create table DB_ZFBA_MOBILE.T_ZJTQD ( "C_BH" char(32) NOT NULL, -- 主键 "C_BH_AJ" varchar2(32) NULL, -- 案件编号 …… "DT_ZHXGSJ" datetime NULL, -- 最后修改时间 constraint PK_T_ZJTQD primary key( C_BH ) );
sql文件结尾添加exit;,保证多个sql文件执行不会中断
3. 编写shell脚本
注意:shell脚本一定在linux中编写,windows编写的有些语句执行不成功(目前原因未知)
例如: a=a b=b c=$a$b echo $c 在windows下编写,linux中执行完会输出b#!/bin/bash # 请先配置数据库连接信息,再执行此脚本 DM_PATH=/home/dmdba/dmdbms #达梦数据库的安装位置 USERNAME=cpuser #达梦数据库连接用户名 PASSWORD=cpuser123 #达梦数据库连接密码 PORT=5236 #达梦数据库连接端口号 # 下面的信息请不要随意修改 CONNECT_INFO=$USERNAME/$PASSWORD:$PORT echo "连接信息:"$CONNECT_INFO # STEP 1 echo "【开始执行】---- sql/02_创建数据库对象/00.CS_GSYS.sql" $DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00.CS_GSYS.sql >> DB_DM.log echo "【执行完成】---- sql/02_创建数据库对象/00.CS_GSYS.sql" # STEP 2 echo "【开始执行】---- sql/02_创建数据库对象/01.CT_GSYS.sql" $DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01.CT_GSYS.sql >> DB_DM.log echo "【执行完成】---- sql/02_创建数据库对象/01.CT_GSYS.sql" # STEP 3 echo "【开始执行】---- sql/02_创建数据库对象/02.CC_GSYS.sql" $DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02.CC_GSYS.sql >> DB_DM.log echo "【执行完成】---- sql/02_创建数据库对象/02.CC_GSYS.sql" # STEP 4 echo "【开始执行】---- sql/02_创建数据库对象/03.CI_GSYS.sql" $DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03.CI_GSYS.sql >> DB_DM.log echo "【执行完成】---- sql/02_创建数据库对象/03.CI_GSYS.sql" # STEP 5 echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql" $DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql >> DB_DM.log echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql" # STEP 6 echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql" $DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql >> DB_DM.log echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql" # Complete echo "【SQL全部执行完成】---- 日志请查看DB_DM.log"
执行完成后,通过shell控制台和DB_DM.log日志可以分析sql脚本是否执行成功。
更多相关内容 -
达梦数据库 导入数据
2020-12-19 19:18:08因为公司要求mysql数据库数据需要转到达梦数据库,对于达梦数据库的了解尚且不多,所以周周转转,寻找度娘以及贴吧,有推荐spoon工具的,有第三方数据迁移工具的。进行使用时发现实在是麻烦,而且对数据的类型太不...因为公司要求mysql数据库数据需要转到达梦数据库,对于达梦数据库的了解尚且不多,所以周周转转,寻找度娘以及贴吧,有推荐spoon工具的,有第三方数据迁移工具的。进行使用时发现实在是麻烦,而且对数据的类型太不友好且不够智能。
达梦的资料实在有限,经过一个下午的寻找,发现原来DM已经有自己的数据迁移工具,使用之后非常方便。
让我明白,原来最好的你一直在我身边,我却视而不见。
DM的数据迁移工具非常强大,可以DM互转主流数据库,无论是oracle-》DM还是DM-》oracle 都是可以完美兼容的,mysql也不例外。
我们安装好达梦数据库之后,便可以在开始-》所有工具-》达梦数据库中看到它的结构
我们选择DM数据迁移工具,然后点击进去
然后在迁移管理里右键新建工程
然后输入工程名即可,可以随便起。点击确定
然后选中项目下的迁移,右键新建迁移
迁移名称也是一样,可以随便起。点击确定
然后看到该页面,点击下一步
然后选择mysql-》DM7,点击下一步
然后输入对应的信息,数据库名会根据你上面的信息填好之后可以进行下拉选择
注意指定驱动项需要mysql的驱动包,除了DM的包不需要导入之外,其他的都要,也就是这个,请选择合适自己数据库驱动包
点击浏览指定该lib包,点击确定
然后点击下一步
然后输入DM的相关信息,此时指定驱动不需要选择,因为DM自带了自己的包,点击下一步
打上勾勾,然后在目的模式选择需要mysql需要导入到对应的DM的数据库名称,如果还没有先去DM数据库创建数据库名称。
选中之后点击下一步
点击选择,就会全部选中,也就是你全部mysql的表都会被导入,然后点击下一步
然后显示的是详细信息,然后点击完成即可。
完成之后便成功的将mysql导入进DM数据库啦!
————————————————
版权声明:本文为CSDN博主「轻雨落笔痕」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/boywcx/article/details/82657338
-
nacos适配dm达梦数据库
2022-01-28 16:44:511.nacos服务,适配dm达梦数据库。 2.提供nacos,dm达梦的创建nacos数据库脚本。 3.nacos-dm/conf/nacos-dm.sql文件。 -
达梦数据库-disql之SQL脚本使用
2021-06-28 09:50:081、使用disql执行sql脚本 配置disql全局登录 vi ~/.bash_profile#编辑dmdba用户的环境变量 #添加如下内容 export DM_HOME="/home/dmdba/dmdbms" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/达梦disql调用sql语句
达梦数据库提供disql工具,我们可以通过disql工具使用命令行方式来查询SQL并将执行结果保留在指定文件中。对于达梦数据库内置的系统视图可以在达梦管理员手册的附录二
1、使用disql执行sql脚本
配置disql全局登录
vi ~/.bash_profile#编辑dmdba用户的环境变量 #添加如下内容 export DM_HOME="/home/dmdba/dmdbms" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin export PATH=$PATH:$DM_HOME/bin
编辑一个sql文件,用于记录登录信息和需要执行的sql语句
vim dmtest.sql #添加如下内容 conn TEST/123456789@LOCALHOST:5236 select * from v$instance; exit;
使用disql的相关命令就可以完成对指定sql的查询,
disql /nolog \`dmtest.sql
2、调用disql
使用disql调用sql脚本可以完成不输入sql的情况下对指定sql进行查询,那么否有更加便捷的方法让每次的查询结果都保存在指定的文件中呢?
先写一个shell脚本,通过脚本调用disql
vim dmtest.sh #添加以下内容 #/bin/bash disql /nolog \`dmtest.sql
目前disql的执行都是前台显示的,让它输入到指定文件中
vim dmtest.sh #添加以下内容 #/bin/bash dmdate=$(date "+%Y%m%d%H%M%S") disql /nolog \`dmtest.sql >dmtest_${dmdate}.log #如果需要前台显示,请增加以下内容 cat dmtst_${dmdate}.log
这样我们就完成后台执行sql脚本并将执行结果写到指定文件中
3、更加优雅的使用方式
选择更加优雅的方式调用disql,并增加具体的中文解释。将查询sql的结果赋值给变量,这样就可以增加个性化的定制
#! /bin/bash #设置dmdbms/bin全局路径 export PATH=$PATH:/home/dmdba/dmdbms/bin export LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH #设置用户名和密码、端口 DB_USER=SYSDBA DB_PASS=SYSDBA DB_PORT=5248 dt=`date +"%Y_%m_%d_%H_%M"` v_date=$(date) echo 执行时间:$v_date >dmtest_${dmdate}.log db_instance_name=$(disql -s ${DB_USER}/\"${DB_PASS}\"@LOCALHOST:${DB_PORT} <<"EOF" SET ECHO OFF; SET FEED OFF; SET HEA OFF; SET LINESHOW OFF; SET NEWP 0; SET PAGES 0; SET TIMING OFF; select INSTANCE_NAME from v$instance; exit EOF ) echo 数据库实例名:$db_instance_name >dmtest_${dmdate}.log cat dmtest_${dmdate}.log
运行结果,获取数据的实例名
disql的环境变量详细说明见达梦disql手册。
更多资讯请上达梦技术社区了解: https://eco.dameng.com
-
SQLServer数据脚本转为达梦数据脚本.doc
2019-09-18 14:45:27此文档主要是将SQLServer数据脚本转为达梦数据库数据脚本,截图为主,有需要的可以参考! -
达梦数据库导入问题
2019-12-13 17:01:20达梦数据库导入的时候有几个参数很重要,要跟文件一致 如下图 此外,导入数据的时候一定要注意 选择导入文件的时候,如果文件路径为"C:\Users\LPH\Desktop\2\base.dmp" 则目录一定要是文件的直接上级目录 ...达梦数据库导入的时候有几个参数很重要,要跟文件一致
如下图
此外,导入数据的时候一定要注意
选择导入文件的时候,如果 文件路径为 "C:\Users\LPH\Desktop\2\base.dmp" 则目录一定要是文件的直接上级目录
否则
-
达梦数据库(导入、导出)
2022-02-09 14:12:011、登录达梦数据库 切换目录到大梦数据库的bin目录下 [root@localhost bin]# ./disql SYSDBA/SYSDBA@localhost:5236 2、创建数据库 创建数据库之后会出现数字,1或2,命令行/回车即可操作完成 3、执行SQL脚本 ... -
达梦数据库/DM7迁移之导出sql脚本
2020-04-08 18:42:19当我们遇到数据迁移的需求时,很多时候出于...本文就将给大家介绍如何在不安装额外软件的情况下,利用达梦数据库自带的工具进行DM7->DM7的数据过滤迁移。 解决方案 2.1 MANAGER工具 2.1.1、利用manager... -
使用DBeaver连接达梦数据库,接上文安装达梦数据库
2020-12-14 12:50:28DBeaver数据库连接工具,是我用了这么久最好用的一个数据库连接工具,拥有的优点,支持的数据库多、快捷键很赞、导入导出数据非常方便、生成sql等很容易,一些数据库还支持直接操作数据,不需要写sql。另外,自动的... -
达梦数据库导入导出dmp文件的常见方式
2021-12-11 20:03:32达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新... -
达梦数据库逻辑导出与导入
2021-11-16 15:19:07一.达梦数据库4种级别导出 库级别 用户级别 模式级别 表级别 1,全库导出 导出数据库的所有用户 2.用户导出 导出用户下的所有模式 ...二.达梦数据库导入 全库级导入 用户级导入 模式级导入 表级导入 ... -
达梦数据库SQL脚本之约束的启用和禁用,索引的失效和重建
2020-12-23 11:48:31--禁用指定模式下的约束 create or replace procedure test_varchar_insert ( var1 varchar(100)) as c_count int := 0; con_name varchar(100);... sql1 varchar(500); sql2 varchar(500); . -
创建数据导入sql脚本
2010-11-30 20:02:17快速从现有数据库获得插入数据脚本,插入到其他库 -
达梦数据库常见问题-命令行工具-导入导出工具
2020-12-19 19:17:591、导入dmp文件出现各种初始化参数不一致的警告(页大小不匹配,restore error code:-8210;CASE_SENSIVE参数不匹配、大小写参数不一致,大小写区分属性不匹配,restore error code:-8212;LENGTH_IN_CHAR属性不... -
达梦数据库如何进行数据过滤迁移
2020-12-19 19:17:57在线QQ客服:1922638专业的SQL Server、MySQL数据库同步软件当我们出于效率和数据安全性的考虑而满足数据迁移的需求时,我们不想迁移整个数据库或整个表,而只想导出部分数据。 DM7提供了各种图形和命令行工具来满足... -
达梦数据库常用操作
2021-09-09 10:11:46SQL> select distinct owner from dba_objects; 获取当前模式名 SQL> select sys_context(‘userenv’, ‘current_schema’) from dual; 设置当前模式 SQL> set schema<模式名>; #只能设置到属于... -
创建达梦数据库实例并导入数据(命令行)
2020-03-11 09:39:24收工! -
在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)
2020-09-10 16:41:39为使用阿里云主机,没有装ftp,也没有装phpmyadmin,所以一切都得靠命令行。转移网站的重要一步就是转移数据库,这里简单介绍一下如何在这种情况下导入sql文件 -
中标麒麟操作系统中安装达梦数据库
2021-05-22 08:57:321、准备中标麒麟操作系统 查看发行版本:cat /etc/issues [root@localhost 桌面]# cat /etc/issue NeoKylin Linux Desktop release 6.0 查看内核版本:uname -r [root@localhost ...这样达梦数据库dm7就安装完成咯! -
达梦数据库迁移ORACLE流程介绍
2021-09-22 22:43:14–重启数据库生效 4、扩展 redo 日志、roll 日志 –SYSDBA 用户登录数据库,执行以下脚本: –扩展 undo 大小 alter tablespace roll resize datafile ‘ROLL.DBF’ to 1024; –扩展 redo 日志文件大小 alter ... -
DM数据库如何执行SQL脚本
2020-08-03 14:16:01DM数据库如何执行SQL脚本 达梦执行脚本的方法有多种,这里演示命令行跟管理工具中的用法: 编写所需的SQL脚本文件,这里演示使用数据库自带的学习脚本: 路径:/dm8/samples/instance_script/bookshop [dmdba@... -
SQLSERVER数据库迁移至国产达梦数据库
2019-09-18 10:36:04环境:SQL SERVER 2008 R2 + Window 10 家庭版 + 达梦7+达梦数据迁移工具 建立数据库,J...DB是数据库名,dbo是模式名,后面是表名称 开始下单打开SQLServer配置管理器 开始代理 开启MSSQLSERVER的... -
DMDB -- 为达梦数据库导入 .dmp 文件提示该工具不能解析此文件,请使用更高版本的工具
2020-05-21 23:20:56数据库管理端操作步骤: https://jingyan.baidu.com/article/db55b609d1d0494ba30a2f92.html 两个数据库框起来的部分不一致 -
Linux下达梦数据库导入导出
2022-01-20 09:34:58达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心 一 导入和导出 导出 1 、使用dexp实现数据库级导出,执行全库导出。 ./dexp SYSDBA/SYSDBA file=db_full.dmp log=db_full.log DIRECTORY=/dm/exp_... -
达梦管理工具通过sql文件导入出现中文乱码的问题
2022-03-23 20:13:51脚本包含中文 这与客户端的编码有关,可以在管理工具–窗口–选项–查询分析器中配置SQL脚本文件编码为自动识别 新开个窗口再次执行脚本 没有出现乱码了 -
达梦数据库使用常见问题小结
2022-01-13 09:46:24作为国内公司推出的具有完全自主知识产权的高性能数据库管理系统,达梦数据库,简称DM,获得了国内越来越多科技公司的广泛使用。目前常用的达梦数据库版本为DM8。 DM8采用全新的体系架构,在保证大型通用的基础上,... -
达梦数据库的学习使用
2020-10-30 16:57:57达梦数据库的学习 一、数据库的安装 之前已有发表数据库的安装博文,在此附上链接。(单库的安装) https://blog.csdn.net/weixin_42356462/article/details/108822532 二、数据库的使用 数据库可以通过... -
不带模式名称访问达梦数据库,pgsql导入达梦数据库
2020-08-27 23:33:57name: dm.jdbc.driver.DmDriver 使用迁移工具迁移迁移pgsql到达梦 新建工程 新建迁移 下一步 其他数据库迁移到达梦,选择PostgreSQL 输入PostgreSQL的信息,刷新可以选择要导入的数据库 输入达梦数据库信息 勾选第一... -
达梦数据库出现卡慢简单分析点
2022-02-13 16:45:01查询锁表:select sess_id,sql_text from v$sessions sess,v$lock lck where sess.trx_id=lck.trx_id and lck.blocked=1; --查询僵死会话 解锁:根据会话ID,停止会话 2.根据sessions会话检查语句,确认sql是否...