Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 如何在不编写脚本的情况下使用ssis创建空的.txt文件_Variables_Ssis_Filesystems_Etl - Fatal编程技术网

Variables 如何在不编写脚本的情况下使用ssis创建空的.txt文件

Variables 如何在不编写脚本的情况下使用ssis创建空的.txt文件,variables,ssis,filesystems,etl,Variables,Ssis,Filesystems,Etl,我的第一个任务是文件系统任务。此任务将创建一个文件夹。现在我不知道如何在文件系统任务刚刚创建的文件夹中创建空白文本文件 我创建了两个变量-mypath(c:\sample\files)和myfilename(test.txt) 我已经创建了新的文件连接,并从使用类型和文件下选择了创建文件选项:我已经给出了@[user::mypath]+@[user::myfilename] 但我得到的错误是: 包验证错误 有人能帮我创建一个新的文本文件吗?好的,您不能使用文件系统任务创建一个空的文本文件 如果不

我的第一个任务是文件系统任务。此任务将创建一个文件夹。现在我不知道如何在文件系统任务刚刚创建的文件夹中创建空白文本文件

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

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

但我得到的错误是:

包验证错误


有人能帮我创建一个新的文本文件吗?

好的,您不能使用文件系统任务创建一个空的文本文件

如果不想使用脚本任务

  • 创建一个空文本文件并创建指向该文件的文件连接管理器。在项目级连接上执行此操作(从SQL Server 2012开始)
  • 参数化新创建的文件连接管理器的连接字符串
  • 现在,使用“文件系统任务”将此空文件复制到所需的目标文件夹
  • 重用此连接管理器在整个项目中生成空文件

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

    命令行调用看起来像

    C:\Users\billinkfc>cmd.exe /C echo off > \tmp\tmp\t2.txt
    
    SSIS变量 我创建了两个变量

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

    第二个使用表达式构建InputParameters变量的值<代码>“/C echo off>”+@[User::CurrentFileName]

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

    使用它 将执行流程任务添加到控制流中。像这样配置它

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

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

    您只需安装visual studio/bids/ssdt bi版本。在integration services项目中,右键单击该项目并选择“添加新biml文件”。将以下内容粘贴到中,然后右键单击并选择生成SSIS包

    
    c:\ssisdata\so_32748216.txt
    +@[User::CurrentFileName]
    @[用户::InputParameters]
    
    <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>