如何在没有脚本的情况下使用ssis创建空的.txt文件

时间:2015-09-23 19:44:40

标签: variables ssis filesystems etl

我的第一个任务是文件系统任务。此任务创建一个文件夹。现在,我无法弄清楚如何在文件系统任务创建的文件夹中创建空白文本文件。

我创建了2个变量 - mypath(c:\ sample \ files)和myfilename(test.txt)。

我创建了新的文件连接,并从使用类型和文件中选择了创建文件选项:我已经提供了@[user::mypath] + @[user::myfilename]

但我收到的错误是:

  

包验证错误。

有人可以帮助我如何创建新的文本文件吗?

2 个答案:

答案 0 :(得分:7)

最简单的方法是使用执行流程任务。您将使用的进程是cmd.exe这是命令行。从那里你将生成一个新实例并终止/c,你将在那里运行echo命令。我们将指定echo off以便不打印任何内容。我们将使用标准输出重定向运算符>

将结果推送到文件中

命令行调用看起来像

C:\Users\billinkfc>cmd.exe /C echo off > \tmp\tmp\t2.txt

SSIS变量

我创建了两个变量

Variables

第一个,CurrentFileName,包含我想要创建的路径。 C:\ ssisdata \ so_32748216.txt

第二个使用表达式来构建InputParameters变量的值。 "/C echo off > " + @[User::CurrentFileName]

您为第一个变量填写正确的值,或者在运行时设置它,第二个变量将在该位置创建一个空文件。

使用它

在控制流上添加执行流程任务。像这样配置

enter image description here

在“表达式”选项卡中,指定参数为@ [User :: InputParameters]。这可确保如果您更改了CurrentFileName的值,则任务会随之更改位置。

enter image description here

BIML

商业智能标记语言Biml是每个人都在做SSIS应该知道的事情。原因有很多,但在这种情况下,这是因为以下代码将为您创建一个SSIS包,其中包含上述变量以及执行流程任务 - 这有多酷?

您需要做的就是为您的visual studio / bid / ssdt-bi版本安装bids helper。在集成服务项目中,右键单击项目并选择Add new biml file。粘贴以下内容然后右键单击并选择Generate SSIS Package。

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
    <Packages>
        <Package Name="so_32748216">
            <Variables>
                <Variable DataType="String" Name="CurrentFileName">c:\ssisdata\so_32748216.txt</Variable>
                <Variable DataType="String" Name="InputParameters" EvaluateAsExpression="true"><![CDATA["/C echo off > "]]> + @[User::CurrentFileName]</Variable>
            </Variables>
            <Tasks>
                <ExecuteProcess 
                    Executable="C:\Windows\System32\cmd.exe" 
                    Arguments="/C echo off > OverrideViaExpression.txt"
                    Name="EPT Create file">
                    <Expressions>
                        <Expression ExternalProperty="Arguments">@[User::InputParameters]</Expression>
                    </Expressions>
                </ExecuteProcess>
            </Tasks>
        </Package>
    </Packages>
</Biml>

答案 1 :(得分:0)

AFAIK您无法使用文件系统任务创建空文本文件。

如果您不想使用脚本任务,

  1. 创建一个空文本文件并创建指向该文件的File Connection_Manager。在项目级别连接(从SQL Server 2012开始)执行此操作。
  2. enter image description here

    1. 参数化新创建的文件连接管理器的连接字符串。
    2. 现在,使用&#34;文件系统任务&#34;将此空文件复制到所需的目标文件夹。
    3. enter image description here

      1. 重复使用此连接管理器在整个项目中生成空文件