使用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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本