达梦数据库shell脚本怎么获取查询语句结果集

达梦数据库shell脚本怎么获取查询语句结果集,第1张

方式一

当然是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/dmini -noconsole

1

2

3

4

5

1

2

3

4

5

2 直接在linux上执行shell命令执行sql脚本

21 # disql username/password:port

使用这个命令可以进入sql控制台

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 5524(ms)

disql V8

SQL>

进入SQL>后:

直接输入sql语句,使用英文分号结尾,回车执行。

使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)

使用“start sql文件路径”,可以执行sql脚本文件。

22 # disql username/password:port `sql文件位置

使用这个命令可以执行sql脚本

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/testsql

[root@localhost sql]#

1

2

1

2

但需注意

这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit; 。

这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。

23 达梦sql脚本注意事项

目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束

例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 6121(ms)

disql V8

SQL> create schema test;

2

3 /

*** 作已执行

已用时间: 26698(毫秒) 执行号: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_MOBILET_ZJTQD';

end if;

end;

/

create table DB_ZFBA_MOBILET_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_创建数据库对象/00CS_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00CS_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/00CS_GSYSsql"

# STEP 2

echo "开始执行---- sql/02_创建数据库对象/01CT_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01CT_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/01CT_GSYSsql"

# STEP 3

echo "开始执行---- sql/02_创建数据库对象/02CC_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02CC_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/02CC_GSYSsql"

# STEP 4

echo "开始执行---- sql/02_创建数据库对象/03CI_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03CI_GSYSsql >> DB_DMlog

echo "执行完成---- sql/02_创建数据库对象/03CI_GSYSsql"

# STEP 5

echo "开始执行---- sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql >> DB_DMlog

echo "执行完成---- sql/03_初始化数据/02I_T_Aty_CodeType_GSYSsql"

# STEP 6

echo "开始执行---- sql/03_初始化数据/02I_T_Aty_Code_GSYSsql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02I_T_Aty_Code_GSYSsql >> DB_DMlog

echo "执行完成---- sql/03_初始化数据/02I_T_Aty_Code_GSYSsql"

# Complete

echo "SQL全部执行完成---- 日志请查看DB_DMlog"

执行完成后,通过shell控制台和DB_DMlog日志可以分析sql脚本是否执行成功。

quartz定时任务配置:

class="orgschelingquartz"

其中:

配置对应的定时任务,可配置多个,名称要唯一,对应的是第二步中配置的

配置,由于要实现动态读取定时任务周期时间,所以我们要写一个类实现,类的内容如下:

publicclassextendsimplements{

privatestaticfinallong=1L;

privatesysParamServiceImpl;

privateStringkey;

publicvoidsetKey(Stringkey)

{

thiskey=key;

}

publicvoidsetSysParamServiceImpl(SysParamServiceImplsysParamServiceImpl)

{

thissysParamServiceImpl=sysParamServiceImpl;

setCronExpression(getCronExpressionFromDB());

}

privateStringgetCronExpressionFromDB()

{

if(StringUtilsisEmpty(key))

return"000/1";

SysParamsysParam=newSysParam();

try

{

sysParam=sysParamServiceImplgetNameByKey(key);

}

catch(Exceptione)

{

eprintStackTrace();

}

if(sysParam!=null&&!StringUtilsisEmpty(sysParamgetParamValue()))

returnsysParamgetParamValue();

return"000/1";

}

}

简单说明一下:key是用来查询数据库配置的CronExpression表达式的查询条件,SysParamServiceImpl是实现查询的类,这几个参数都要从spring配置的CronTriggerFactoryBean参数获取,注意,配置的时候,key值的配置要在SysParamServiceImpl的配置之前,否则报空指针

spring配置CronTriggerFactoryBean:

实现了CronTriggerFactoryBean之后,开始配置CronTriggerFactoryBean,现在配置的是InitCronTriggerFactoryBean:

id对应quartz定时任务配置的,参数有三个,第二个和第三个是InitCronTriggerFactoryBean设置内容需要的,第一个则是定时任务执行业务逻辑的类

ps:,这个要配置对应的bean,我的是

配置对应的定时任务执行业务方法的类:

class="orgspringframeworkschelingquartzJobDetailFactoryBean"

简单说明一下:配置的是你需要定时执行的类,下面配置的是定时执行类中需要用到的其他类,这是由于项目启动执行定时任务不能在定时任务类中实例化这些类,要配置才行。

对应的定时任务执行类:

publicclassInquiryQuartzextendsQuartzJobBean{

@Autowired

privateInquiryServiceImplinquiryServiceImpl;

@Override

protectedvoidexecuteInternal(JobExecutionContextarg0)throwsJobExecutionException

{

//实例化接口

inquiryServiceImpl=(InquiryServiceImpl)arg0getJobDetail()getJobDataMap()get("inquiryServiceImpl");

//执行业务方法

quartzStart();

}

publicvoidquartzStart(){

//业务方法

}

}

说明一下:必须要实现QuartzJobBean接口

至此,就可以完成可配置CronExpression表达式的定时任务了!1

新建表:首先打开或新建一个数据库,在该数据库上使用的构赵函数定义一个对象,在调用Create函数建新表,之后调用Append函数加入数据库:

void()

{

CStringstrSystemDB=

_T("路径");

SetSystemDB(strSystemDB);

//Usernameandpasswordmanuallyadded

//byusingMicrosoftAess

CStringstrUserName=_T("NewUser");

CString=_T("Password");

CString=_T("NewPassword");

(strUserName,);

(strUserName,,

);

}

//设置默认用户和密码

void(CString&strUserName,CString&strPassword)

{

COleVariantvarUserName(strUserName,VT_BSTRT);

COleVariantvarPassword(strPassword,VT_BSTRT);

DAODBEnginepDBEngine=();

ASSERT(pDBEngine!=NULL);

//设置默认用户

DAO_CHECK(pDBEngine->put_DefaultUser(varUserNamebstrVal));

//设置默认密码

DAO_CHECK(pDBEngine->put_(varPasswordbstrVal));

}

///更改密码

void(LPCTSTRpDB,LPCTSTR,LPCTSTR)

{

db;

CStringstrConnect(_T(";pwd="));

//数据库必须打开

//设置密码

dbOpen(pDB,TRUE,FALSE,

strConnectpszOldPassword);

COleVariantNewPassword(pszNewPassword,VT_BSTRT),OldPassword(pszOldPassword,VT_BSTRT);

DAO_CHECK(dbm_pDAODatabase->NewPassword(V_BSTR(&OldPassword),V_BSTR(&NewPassword)));

dbClose();

}

直接varchar或者text之类的类型即可插入。在Mysql57或以上可以支持JSON数据类型。其他的数据库你可以参考他的不同版本,考虑是否支持JSON数据类型,如果不支持就用字符串类型。但是要考虑长度。

PS:如果是用客户端链接,那么就算数据库支持,那客户端也得是最新版支持JSON的,要不然数据库支持,工具以为不支持!

数据库 跟 服务端脚本语言 没有直接关系!

ASP 支持 Access 也就是你说的mdb文件,当然在ASp中你把这个文件改成其他任意扩展名一样可以使用!

此外ASP 还支持 MSSQL 数据库!毕竟ACCESS 数据库无论是功能还相对比较小!

一般与PHP搭档的数据库软件,当然是大名鼎鼎的MySQL,此外PHP还支持很多很多数据库!就不一一列举了!

MySQL的数据库数据在MySQL的安装目录下的 data文件夹里,他不能像Access那样很方便的拷贝,连接方式也跟Access不相同!

正常情况下,你不会知道这个数据文件存在哪,而且一般都是在WEB根目录之外,当然更无从下载!

当然事情也不绝对,您如果是技术够硬的安全人员,你可以攻击服务器,通过漏洞完全控制它,或者通过网站程序漏洞侵入,放上webshell 把数据导出来!

以上就是关于达梦数据库shell脚本怎么获取查询语句结果集全部的内容,包括:达梦数据库shell脚本怎么获取查询语句结果集、spring配置quartz后怎么访问数据库、如何建立mdb数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9726746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存