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

sam*_*sam 2 filesystems variables ssis etl

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

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

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

但我得到的错误是:

包验证错误.

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

bil*_*nkc 7

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

命令行调用看起来像

C:\Users\billinkfc>cmd.exe /C echo off > \tmp\tmp\t2.txt
Run Code Online (Sandbox Code Playgroud)

SSIS变量

我创建了两个变量

变量

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

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

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

使用它

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

在此输入图像描述

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

在此输入图像描述

BIML

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

您需要做的就是为您的visual studio/bid/ssdt-bi版本安装出价帮助器.在集成服务项目中,右键单击项目并选择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>
Run Code Online (Sandbox Code Playgroud)