在SSIS中使用7zip解压缩文件

时间:2014-08-18 18:50:00

标签: sql-server sql-server-2008 ssis 7zip

我目前正在使用Process Task尝试使用以下设置解压缩SSIS中的文件:

enter image description here

我正在使用此声明:

e "Inventory.zip" -o"c:\broinctarget\" -y

我实际上是使用以下方式生成上述语句:

enter image description here

"e " +"\"" + "Inventory.zip"  + "\"" + " -o" + "\"" +@[$Package::targetLocation]  +"\""+" -y"
@[$Package::targetLocation]

我做的事情显然是错的吗?

如何在SSIS中使用7zip解压缩* .zip文件?

1 个答案:

答案 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);
    }