达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本

达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本,第1张

通过shell脚本调用sql脚本:

1、shell脚本调用sql脚本

#首先编辑sql文件

oracle@SZDB:~> more deptsql

connect scott/tiger

spool /tmp/deptlst

set linesize 100 pagesize 80

select from dept;

spool off;

exit;

#编辑shell脚本文件,在shell脚本内调用sql脚本

oracle@SZDB:~> more get_deptsh

#!/bin/bash

# set environment variable

if [ -f ~/bashrc ]; then

~/bashrc

fi

export ORACLE_SID=CNMMBO

sqlplus -S /nolog @/users/oracle/deptsql #注意此处执行sql脚本的方法 -S 表示以静默方式执行

exit

#授予脚本执行权限

oracle@SZDB:~> chmod 775 get_deptsh

-->执行shell脚本

oracle@SZDB:~> /get_deptsh

DEPTNO DNAME LOC

---------- -------------- -------------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

2、shell脚本调用rman脚本

#首先编辑RMAN脚本

oracle@SZDB:~> more rmanrcv

RUN {

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

CONFIGURE BACKUP OPTIMIZATION ON;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';

ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;

ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;

SET LIMIT CHANNEL CH1 READRATE=10240;

SET LIMIT CHANNEL CH1 KBYTES=4096000;

SET LIMIT CHANNEL CH2 READRATE=10240;

SET LIMIT CHANNEL CH2 KBYTES=4096000;

CROSSCHECK ARCHIVELOG ALL;

DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;

BACKUP

DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';

BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;

DELETE NOPROMPT OBSOLETE;

RELEASE CHANNEL CH1;

RELEASE CHANNEL CH2;

}

#编辑shell脚本文件,在shell脚本内调用rman脚本

oracle@SZDB:~> more rman_baksh

#!/bin/bash

# set environment variable

if [ -f ~/bashrc ]; then

~/bashrc

fi

export ORACLE_SID=CNMMBO

$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rmanrcv log=/users/oracle/bak/rmanlog

exit

#授予脚本执行权限

oracle@SZDB:~> chmod 775 rman_baksh

#执行shell脚本

在SQL中,右击数据库文件,选择任务》生成脚本,在生成脚本选项中选择“编写数据的脚本”改为True,在“为数据库服务器版本生成脚本”一项中,改为SQL 2005,生成的脚本直接在SQL2005中执行,即可。不过如果数据量较多,可能生成的脚本较大,可分步执行。

创建数据库的SQL语句:

create database stuDB

on primary -- 默认就属于primary文件组,可省略

(

/--数据文件的具体描述--/

name='stuDB_data', -- 主数据文件的逻辑名称

filename='D:\stuDB_datamdf', -- 主数据文件的物理名称

size=5mb, --主数据文件的初始大小

maxsize=100mb, -- 主数据文件增长的最大值

filegrowth=15%--主数据文件的增长率

)

log on

(

/--日志文件的具体描述,各参数含义同上--/

name='stuDB_log',

filename='D:\stuDB_logldf',

size=2mb,

filegrowth=1mb

)

删除这个数据库,SQL Server将数据库的清单存放在master系统数据库的sysdatabases表中,只需要查看该表是否存在于该数据库中就可以

了,语句如下:

use master -- 设置当前数据库为master,以便访问sysdatabases表

go

if exists(select from sysdatabases where name='stuDB')

drop database stuDB

go

创建表和删除表的SQL语句如下:

use StuDB

go

if exists(select from sysobjects where name='stuMarks')

drop table stuMarks

create table stuMarks

(

ExamNo int identity(1,1) primary key,

stuNo char(6) not null,

writtenExam int not null,

LabExam int not null

)

go

-- 其中,列属性"identity(起始值,递增量)" 表示"ExamNo"列为自动编号, 也称为标识列

alter table 表名

add constraint 约束名 约束类型 具体的约束说明

alter table 表名

drop constraint 约束名

alter table stuMarks

add constraint UQ_stuNo Unique(stuNo)

alter table stuMarks

drop constraint UQ_stuNo

/--添加SQL登录账户--/

exec sp_addlogin 'xie', '123456' -- 账户名为xie,密码为123456

--删除xie账户名

exec sp_droplogin 'xie'

/--在stuDB数据库中添加两个用户(必须存在)--/

use stuDB

go

exec sp_grantdbaccess 'xie','123456'

go

-- 提示:SQL Server 中的dbo用户是具有在数据库中执行所有活动权限的用户,表示数据库的所有者(owner),一般来说,

-- 如果创建了某个数据库,就是该数据库的所有者,即dbo用户,dbo用户是一个比较特殊的数据库用户,无法删除,且此用

-- 户始终出现在每个数据库中

/ --给数据库用户授权-- /

-- 授权的语法如下

-- grant 权限 [on 表名] to 数据库用户

use stuDB

go

grant select,update,insert on stuMarks to xie

grant create table to xie

go

以上就是关于达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本全部的内容,包括:达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本、sqlserver2005怎么将数据库生成为脚本、sql 创建数据库 创建表 脚本代码~只要代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9341817.html

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

发表评论

登录后才能评论

评论列表(0条)

保存