我目前正在使用Process Task尝试使用以下设置解压缩SSIS中的文件:
我正在使用此声明:
e "Inventory.zip" -o"c:\broinctarget\" -y
我实际上是使用以下方式生成上述语句:
"e " +"\"" + "Inventory.zip" + "\"" + " -o" + "\"" +@[$Package::targetLocation] +"\""+" -y"
@[$Package::targetLocation]
我做的事情显然是错的吗?
如何在SSIS中使用7zip解压缩* .zip文件?
答案 0 :(得分:1)
我在我写的SSIS包上遇到了类似的问题。我最终在c#脚本中生成批处理文件,并在执行流程任务中调用该批处理文件。
我还需要根据一些表参数灵活地添加密码选项。
我意识到这是一个额外的步骤,如果我解压缩大量的文件可能很重要,但对于For-Each容器来说,它将达到5-10个文件,这不是什么大问题 - 你可以很容易阅读批处理文件以查看运行的内容。
string exe7z = Dts.Variables["s7ZIPPath"].Value.ToString();;
string zipFile = Dts.Variables["sZIPFile"].Value.ToString();
string outPath = Dts.Variables["sFileLocation"].Value.ToString();
string password = Dts.Variables["sZIPPassword"].Value.ToString();
if (password.Length > 0)
{
password = "-p\"" + password + "\"";
}
if (!(outPath.EndsWith("\\")))
{
outPath = outPath + "\\";
}
string batchFile = outPath + "unzip.bat";
Dts.Variables["sZipBatchFile"].Value = batchFile;
using (StreamWriter writer = new StreamWriter(batchFile))
{
writer.Write("\"" + exe7z + "\" e \"" + zipFile + "\" -o\"" + outPath + "\" -y " + password);
}