达梦数据库怎么写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脚本

方法1:SQL

Server

2008

自带的导出功能

“任务

生成脚本”

打开sql

server

2008

后,选择你要导出的数据库

在数据库上右击,选择任务→生成脚本

进入简介页面,直接点击下一步就可以了

选择对象页面,可以选择导出整个数据库的脚本,或者其中的部分表

进入设置脚本选项,首先把导出的路径选择好,防止一会儿忘记设置路径,找不到导去哪里了

然后点击高级——要编写脚本的数据类型——架构和数据

之后回到编写选项的页面,点击下一步

要摘要页面,可以做个简单的检查,看前面的选择是不是您想要的

检查无误,点击下一步,开始执行

方法2:动软代码生成器

打开动软代码生成器,并连接上数据数,点击右侧的数据库脚本生成器

选择要导出的数据库,选择保存的路径和名字,然后选择要导出的表,可以选择全部表或部分表

设置好后,点击生成

注意事项:

sql

server

2008

自带的导出功能,一定要在高级选项中,选择架构和数据,不然表中的数据默认是不导出来滴

1用SqlServer的维护计划

在这里我就不给截图演示了,这个比较简单,无非就是通过sqlserver自己的维护计划拖拽出2个一个‘备份数据库'任务和一个‘清除维护'任务。

需要注意的点:

1)有备份任务里边选择备份的库尽量选‘所有用户数据库'这项,以免选择了特定数据库备份以后某天添加了新数据库却忘了勾选导致丢备份。

2)选项验证备份集完整性和压缩备份尽量都选上。

3)备份的路径尽量别选磁盘根目录。

2通过脚本+作业的方式备份数据库(非xp_cmdshell)。如果是多个库的话自己写个游标用动态sql的方式即可实现多库备份,我这里就提供个思路偷懒就不整理了。

复制代码 代码如下:

DECLARE @filename VARCHAR(500)

DECLARE @date DATETIME

DECLARE @OLD_DATE DATETIME

SET @date=GETDATE()

SET @OLD_DATE=GETDATE()-5 --超过5天的备份即将被删除

SET @FILENAME = 'E:\存放位置\数据库名称-'+CAST(DATEPART(YYYY,@DATE) AS VARCHAR(10))+'-'+CAST(DATEPART(MM,@DATE) AS VARCHAR(10))+'-'+CAST(DATEPART(DD,@DATE) AS VARCHAR(10))+'BAK'

BACKUP DATABASE [数据库名称] TO DISK = @filename WITH COMPRESSION

EXECUTE masterdboxp_delete_file 0,N'E:\存放位置',N'bak',@OLD_DATE,1

GO

3通过脚本+作业的方式备份数据库(用xp_cmdshell),如果你觉得你们服务器的网络、代码、以及防火墙足够安全可以开启xp_cmdshell的方式来备份。

如果数据库没开启xp_cmdshell的功能需要用以下脚本开通此功能,开通以后记得关闭sp_configure。

复制代码 代码如下:

USE Master

GO

EXEC sp_configure 'show advanced options', 1;

批量插入数据脚本

1、第一种批量插入数据脚本,可以基本满足要求。理解上较为简单,所以这个最常用。

NEXTVAL和CURRVAL的区别:

1、如果 sequenceCURRVAL 和 sequenceNEXTVAL 都出现在一个 SQL 语句中,则序列只增加一次。在这种情况下,每个 sequenceCURRVAL 和 sequenceNEXTVAL 表达式都返回相同的值,不管在语句中sequenceCURRVAL 和 sequenceNEXTVAL 的顺序。

执行脚本结果如下:

3、两个表,同时批量插入数据的脚本

3、

4、 涉及子表时,批量插入数据脚本,

5、 批量修改数据

时间取数方式:

一、SYSTIMESTAMP(取当前系统值)

二、SYSDATE(取当前系统值,但只精确到时,分和秒都为0)

三、固定值为:TO_TIMESTAMP ('2019-2-12 15:24:45703000', 'yyyy-mm-dd hh24:mi:ssff6')

把固定的字段改为变量:

方式一:’||i||’ 例:’{“no”:“111’||i||’”}’(此方式)

方式二:concat 例:concat(concat(’{“blNo”:111"’,i),’"}’)

1在常规中点击 显示全部,勾选编辑全部对象脚本

2设置格式中 除了倒数第一(70兼容)倒数第三(说明性标题)两个选项外全部勾选

3选项中 安全性脚本选项 全不勾选,表脚本选项 全部勾选,文件格式为 国际化文本,生成文件为 每个对象创建一个文件

对生成的文本文件用版本库进行管理,可实现对数据库结构的简单管理工作,但是对数据无能为力。

1选中数据库,右键->所有任务->导出数据,在选择目的 数据库中选择新建 数据库名为DB_TEST,

2在指定表复制或者查询中 选择 在SQL Server数据库之间复制对象和数据

3在 选择要复制的对象 中 额外勾选 包括扩展属性

4点击下一步。。。完成数据完整复制 工作

以上就是关于达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本全部的内容,包括:达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本、怎么导出Sql Server数据库表结构和数据的脚本、sqlserver脚本备份固定多个数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存