使用Windows 命令行压缩程序 Winrar,在SQL存储过程中压缩Excel文件

使用Windows 命令行压缩程序 Winrar,在SQL存储过程中压缩Excel文件。

Winrar 压缩解压软件几乎人人都会用,但是对于搞程序开发的朋友来说, 命令行压缩解压有时候更有用。这不,最近有个需求是这样的: 利用 SQL Server 存储过程检查数据库中的错误数据, 并把这些错误数据导入 Excel 格式数据文件, 然后通过 DB Email 发给用户。可惜的是,Excel 数据文件太大,有 20 MB 左右,邮件发送不了。

这时候就需要在 SQL 存储过程中实现自动压缩 Excel 文件的功能。如何实现呢?我们知道 SQL Server 中还没有内置这样的压缩解压 功能,唯一的办法就是使用 xp_cmdshell 来调用外部程序来实现了。 外部压缩程序?哦,首先想到的是 Winrar,这个比较常用。 我想,Winrar 或许可以在 Windows 命令行下运行,于是就找到 Winrar 的帮助 文档翻了翻。突然眼前一亮,果然能在 Windows 命令行下运行。 下面介绍 Winrar 在命令行下的简单用法。

需要注意的是,Winrar.exe 默认情况下没有加入到 Windows 环境变量“path” 中, 所以在Windows 命令下执行不了。可以进入Winrar.exe 所在目录执行 Winrar。 或者直接加入到“path” 中,这样就可以在命令行直接执行。

Winrar 命令行语法:

WinRAR  command -switch1 -switchN archive files... @listfiles... path_to_extract
command         : 命令。常用的有压缩(a);解压缩(e 或者 x)
switch          : 直译为“开关”。我理解为“附加参数”。需要在每个“附加参数”前面加“-”
archive         : 归档文件。
files           : 需要被压缩的文件。可以有多个。
listfiles       : 存放需要被压缩的文件列表的文件。文件名前加@,以区别于被压缩文件。
path_to_extract : 解压缩路径。

Winrar 命令行语法(压缩):

Winrar command -switch... archive files...

1. 压缩 d:\a.txt,并保存为 c:\a.rar

winrar.exe a c:\a.rar d:\a.txt

2. 压缩 d:\a.txt, d:\b.txt, d:\c.txt,并保存为 c:\sqlstudy.rar

winrar.exe a c:\sqlstudy.rar d:\a.txt d:\b.txt d:\c.txt

3. 最大程度地压缩 d:\a.txt,并保存为 c:\a.rar

winrar.exe a -M5 c:\a.rar d:\a.txt

4. 设定压缩程度,需要使用 switch: Mn。n(0~5)。0 不压缩,5 最大程度压缩。

-M0   Store Add files to archive without compression
-M1   Fastest   Fastest method (least compressive)
-M2   Fast      Fast compression method
-M3   Normal    Normal (default) compression method
-M4   Good      Good compression method (more compressive)
-M5   Best      Best compression method (most compressive but also most slow)

5. 压缩 d:\下的所有.sql 文件,并保存为 c:\a.rar

winrar.exe a c:\a.rar d:\*.sql

6. 压缩 d:\filelist.txt 中列出的文件,并保存为 c:\a.rar

winrar.exe a c:\a.rar @d:\filelist.txt

7. 其中,d:\filelist.txt 文件内容为:

d:\a.txt
d:\b.txt
d:\c.txt
d:\*.sql
d:\test\*.*

8. 压缩 d:\a.txt,并保存为 c:\a.rar,另外压缩后删除源文件 d:\a.txt

winrar.exe a -DF c:\a.rar d:\a.txt

9. 压缩 d:\test\*.*,并保存为 c:\a.rar,另外在归档文件中不包含文件路径信息。

winrar.exe a -EP c:\a.rar d:\a.txt

10. SQL 调用 Winrar 命令行,压缩 d:\a.txt,并保存为 c:\a.rar

exec xp_cmdshell '"c:\program files\winrar.exe" a c:\a.rar d:\a.txt'

注意:因为 program files 文件夹名字中间有个空格,所以要在 c:\program files\winrar.exe 前后加上双引号。否则 SQL Server 找不到 Winrar.exe。

posted @ 2012-08-29 11:51  jefflu99  阅读(971)  评论(0编辑  收藏  举报