本文主要介绍Windows系统中使用批处理BAT脚本对以下4种常见数据库进行自动操作的方法:
MySQL
Oracle
DB2
Microsoft SQL Server
具体实现非常简单,总共就两步:
把需要在数据库里面执行的SQL语句写入一个文本文件
调用数据库客户端命令行工具连接数据库并执行SQL语句
各个数据库对应的客户端命令行工具名称如下:
【1】MySQL
@echooff
REM 数据库用户名
setDB_User=Batcher
REM 数据库密码
setDB_Pass=Pass2018
REM 数据库服务器IP地址
setDB_IP=172.16.0.103
REM 数据库端口号
setDB_Port=3306
REM 保存SQL语句的临时文件
setFile_SQL="C:\test.sql"
REM 保存代码执行结果的输出文件
setFile_Result="C:\test.csv"
REM 根据业务需求把实际需要执行的SQL语句输出到一个临时文件
>%File_SQL%echoselect now();
>>%File_SQL%echoselect Host,User from mysql.user;
>>%File_SQL%echoexit
REM 连接数据库执行操作并把结果输出到文件
mysql.exe-u%DB_User%-p%DB_Pass%-h%DB_IP%-P%DB_Port%%File_Result%
【2】Oracle
@echooff
REM 数据库用户名
setDB_User=Batcher
REM 数据库密码
setDB_Pass=Pass2018
REM 数据库服务器IP地址
setDB_IP=172.16.0.103
REM 数据库端口号
setDB_Port=1521
REM 数据库实例
setDB_SID=ORCL
REM 保存SQL语句的临时文件
setFile_SQL="C:\test.sql"
REM 保存代码执行结果的输出文件
setFile_Result="C:\test.csv"
REM 根据业务需求把实际需要执行的SQL语句输出到一个临时文件
>%File_SQL%echoset linesize 200
>>%File_SQL%echocol MEMBER format a50
>>%File_SQL%echoSELECT * FROM V$LOGFILE;
>>%File_SQL%echoexit
REM 连接数据库执行操作并把结果输出到文件
sqlplus.exe%DB_User%/%DB_Pass%@%DB_IP%:%DB_Port%/%DB_SID%@%File_SQL%>%File_Result%
【3】DB2
@echooff
REM 查询DB2数据库并把结果上传到FTP
setDatabaseName=SAMPLE
setTableName=SALES
setColumnName=SALES
setdb2File=%temp%\TempDB2.bat
setdb2Output=%temp%\TempOutput.txt
>"%db2File%"(
echodb2 connect to%DatabaseName%
echodb2selectmax^(%ColumnName%^)from%TableName%
echodb2 disconnect%DatabaseName%
echodb2 quit
)
echoPlease waitforminutes ...
db2cmd-c-i-w"%db2File%">"%db2Output%"
for/f"usebackq skip=10"%%a in("%db2Output%")do(
setMaxData=%%a
goto:AutoFTP
)
:AutoFTP
REM 指定FTP用户名
setftpUser=USERNAME
REM 指定FTP密码
setftpPass=PASSWORD
REM 指定FTP服务器地址
setftpIP=192.168.0.2
REM 指定待下载的文件位于FTP服务器的哪个目录
setftpFolder=/SharedFile/Log
REM 指定从FTP下载下来的文件存放到本机哪个目录
setLocalFolder=C:\temp
setftpFile=%temp%\TempFTP.txt
>"%ftpFile%"(
echo/%ftpUser%
echo/%ftpPass%
echo cd"%ftpFolder%"
echolcd"%LocalFolder%"
echobin
echoget%MaxData%.txt
echobye
)
startftp-v-i-s:"%ftpFile%"%ftpIP%
goto:eof
【4】Microsoft SQL Server
@echooff
set"OSQL=C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql.exe"
>"C:\test.sql"echoselectcount(*)from sys.tables;
>>"C:\test.sql"echoselecttop10*from information_schema.tables WHERE table_type='base table';
"%OSQL%"-S"服务器名"-U"用户名"-P"密码"-d"数据库名"-i"C:\test.sql">"C:\test.txt"
特别提醒:
领取专属 10元无门槛券
私享最新 技术干货