bat 链接mysql数据库_使用bat脚本进行数据库操作

本文介绍了如何通过BAT脚本进行数据库操作,包括调用SQL文件执行查询、直接在脚本中写SQL语句以及如何实现跨服务器数据迁移。示例中展示了如何连接MySQL数据库,执行查询和导入导出数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要使用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 * fromITSV.数据库名.dbo.表名10

11 --导入示例

12 select * into 表 fromITSV.数据库名.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 updateb32 set b.列A=a.列A33 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名)as a inner join本地表 b34 on a.column1=b.column135

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 updateb48 set b.列B=a.列B49 FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') asa50 inner join 本地表 b on a.列A=b.列A51

52 --3、opendatasource/openrowset

53 SELECT *

54 FROM opendatasource( 'SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码').test.dbo.roy_ta55 --把本地表导入远程表

insert into 机器B别名.数据库.dbo.表(字段1,。。。。。。)

select top(3000) 字段,。。。 from 机器A别名.数据库.dbo.表

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值