使用bat脚本进行数据库操作
一、为什么要使用bat脚本进行数据操作?
因为实际项目中,我们可能要对库中表的数据量进行定时统计或者数据进行定时备份,那么此时使用操作系统定时任务管理器,定时执行我们脚本中的任务就是最方便的选择。具体如何在定时任务设置参考博文。
二、如何使用
例子1:在.bat文件中调用.sql文件
A. 创建select.sql
connect to ksccs user ksccs using cvicse;
select count(*) from beps_wastebook2;
connect reset;
B. 创建db2_select.bat,内容如下:
@echo off
echo ###调用生成的文件操作数据库###
db2cmd db2 -tf "select.sql"
C.执行.bat
例子2:在.bat中执行sql:
A. 创建db2_called.bat
@echo off
echo ###直接用sql语句###
db2 connect to ksccs user ksccs using cvicse
db2 select count(*) from beps_wastebook1
db2 connect reset
pause
B. 创建db2_cw.bat
@echo off
db2cw db2_called.bat
pause
三、sql定时从一台机器抽取数据到另一台的数据库
最近出现数据交互太频繁,所以想减轻机器压力,想问下,什么方式比较高效的3000条数据从一台机器一次性复制到两外一台机器的sql表里呢? 而且是定时处理,大概1小时1次。可以使用SQL Server Agent中的Job,中文就是SQL代理里面的计划任务,把SQL贴上,然后设定RUN的时间间隔就好了。
1 --不同服务器之间的: 2 /*不同服务器数据库之间的数据操作*/ 3 4 --创建链接服务器 5 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 6 exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' 7 8 --查询示例 9 select * from ITSV.数据库名.dbo.表名 10 11 --导入示例 12 select * into 表 from ITSV.数据库名.dbo.表名 13 14 --以后不再使用时删除链接服务器 15 exec sp_dropserver 'ITSV ', 'droplogins ' 16 17 --连接远程/局域网数据(openrowset/openquery/opendatasource) 18 --1、openrowset 19 20 --查询示例 21 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 22 23 --生成本地表 24 select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 25 26 --把本地表导入远程表 27 insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 28 select *from 本地表 29 30 --更新本地表 31 update b 32 set b.列A=a.列A 33 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 34 on a.column1=b.column1 35 36 --openquery用法需要创建一个连接 37 38 --首先创建一个连接创建链接服务器 39 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 40 --查询 41 select * 42 FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') 43 --把本地表导入远程表 44 insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') 45 select * from 本地表 46 --更新本地表 47 update b 48 set b.列B=a.列B 49 FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a 50 inner join 本地表 b on a.列A=b.列A 51 52 --3、opendatasource/openrowset 53 SELECT * 54 FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 55 --把本地表导入远程表
insert into 机器B别名.数据库.dbo.表(字段1,。。。。。。)
select top(3000) 字段,。。。 from 机器A别名.数据库.dbo.表
参考:
浙公网安备 33010602011771号