从SQL脚本运行7-zip

问题描述 投票:1回答:2

是否可以从SQL脚本调用7-zip?基本上我将表提取到csv然后将它们打包成7z文件。我在安装了SQL Server的机器上安装了7-zip并将其添加到路径中,但这似乎还不够。

当我尝试使用xp_cmdshell运行脚本时出现以下错误

'7z' is not recognized as an internal or external command,
operable program or batch file.

这是代码,我已经声明了变量

declare @archiveCommand nvarchar(max)
declare @filename nvarchar(max)

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '
print @archiveCommand
EXEC master..xp_cmdshell @archiveCommand
sql sql-server 7zip
2个回答
2
投票

这是可能的,是的,但可能是一个坏主意:权限通常是一个问题(正如您已经发现的那样),路径和工作目录会让您失望,并且在SQL中构建shell命令是一个全面的痛苦。只使用外部脚本并从预定作业或SSIS包运行它会容易得多。

如果您确切地说明了为什么以及何时希望从SQL运行脚本,那么有人可能会建议更好的方法。例如,我使用SSIS和Python做同样的事情。


4
投票

我不知道这现在是否有用,但我遇到了这个问题并通过调用带有文件名的7z应用程序解决了这个问题。

所以代替:

set @archiveCommand = '7z a '+@filename+'.7z '+@filename+' '

你会想要:

set @archiveCommand = '"C:\Program Files\7-zip\7z" a '+@filename+'.7z '+@filename+' '

© www.soinside.com 2019 - 2024. All rights reserved.