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
Ssis 使用SSI根据当前访问的文件夹递归导航生成动态xml文件的目录_Ssis - Fatal编程技术网

Ssis 使用SSI根据当前访问的文件夹递归导航生成动态xml文件的目录

Ssis 使用SSI根据当前访问的文件夹递归导航生成动态xml文件的目录,ssis,Ssis,我需要使用SSIS(SQL Server集成服务)访问文件夹及其所有子文件夹。目前,通过在读取文件夹路径后将其设置为一个变量,我能够遍历当前文件夹的所有.txt文件,并填充一个预生成的(带有head info)xml文件 我现在需要的是能够为每个访问的文件夹创建一个新的xml文件(开始的内容将始终相同)。一旦我能够创建它,作为访问新文件夹的第一个操作,我就可以简单地应用到目前为止我开发的逻辑 但是,我现在被阻止了,因为在我读取文件的循环中(带有完整路径),我找不到一种方式来表示“如果访问的文件夹

我需要使用SSIS(SQL Server集成服务)访问文件夹及其所有子文件夹。目前,通过在读取文件夹路径后将其设置为一个变量,我能够遍历当前文件夹的所有.txt文件,并填充一个预生成的(带有head info)xml文件

我现在需要的是能够为每个访问的文件夹创建一个新的xml文件(开始的内容将始终相同)。一旦我能够创建它,作为访问新文件夹的第一个操作,我就可以简单地应用到目前为止我开发的逻辑


但是,我现在被阻止了,因为在我读取文件的循环中(带有完整路径),我找不到一种方式来表示“如果访问的文件夹是新的,则创建xml文件”

假设我理解这个问题,您需要遍历整个目录结构,对于找到的每个文件夹,您需要创建一个基本XML文件。然后,对于在该文件夹中找到的每个文本文件,您将对XML文件执行一些操作。诀窍在于如何只创建一次XML文件

我会设想这样一个过程

使用来填充包含文件夹结构的变量(directoryXML>)的脚本任务,如

<Dir>
    <D>C:\ssisdata</D>
    <D>C:\ssisdata\a</D>
    <D>C:\ssidata\a\b</D>
</Dir>

C:\SSIS数据
C:\ssisdata\a
C:\ssidata\a\b
使用将该XML分解为一个变量(currentdirectry)

您将执行在currentDirectory中创建XML文件的一次性任务

进一步使用currentDirectory变量作为Foreach文件枚举器上的表达式(分配给FileSpec为*.txt的目录),然后可以对所有符合该规范的文件执行任务。不要选中“遍历子文件夹”选项,因为这将不会给出所需的结果


这是解决该问题的一种相当高级别的方法,因为我假设您对SSIS有一定的了解,但这种方法应该是合理的。如果您有任何特殊的症结,请告诉我。

谢谢您的提示,我已经开始在不同的任务中进行流程拆分,但您的回答帮助了我。对于良好的解释,+1国家!