Sql server SSIS-如何将保存在不同文件夹中的csv文件复制到单个文件夹

Sql server SSIS-如何将保存在不同文件夹中的csv文件复制到单个文件夹,sql-server,ssis,etl,sql-server-data-tools,Sql Server,Ssis,Etl,Sql Server Data Tools,我有一个软件包,可以将多个(14)csv文件和区域名称保存到各自的区域(14)文件夹中。现在我想把所有新创建的14个csv文件复制到一个文件夹中。我如何通过SSIS实现这一目标,请任何人帮助我实现这一目标 非常感谢您的帮助。在脚本组件中: DirectoryInfo ParentInfo = new DirectoryInfo(ParentDirectoryPath); FileInfo[] FileArray = ParentInfo.GetFiles("*",SearchOption.All

我有一个软件包,可以将多个(14)csv文件和区域名称保存到各自的区域(14)文件夹中。现在我想把所有新创建的14个csv文件复制到一个文件夹中。我如何通过SSIS实现这一目标,请任何人帮助我实现这一目标


非常感谢您的帮助。

在脚本组件中:

DirectoryInfo ParentInfo = new DirectoryInfo(ParentDirectoryPath);
FileInfo[] FileArray = ParentInfo.GetFiles("*",SearchOption.AllDirectories);
foreach (FileInfo Fil in FileArray)
{
Fil.CopyTo(Destination Path);
}

没有经过测试,但是类似这样的东西可以通过使用C#获得更具体的方法,但是可以使用foreach文件枚举器

将路径映射到父文件夹并选择“遍历子文件夹”

添加*.csv作为搜索字符串

将完整路径映射到变量


在foreach内部,添加文件系统任务以复制文件。

在SSI中的目录之间复制文件有3种方法:

  • 使用执行流程任务
  • 可以使用类似的命令复制文件:

    COPY c:\Source\*.txt c:\Destination
    
  • 使用脚本任务
  • 您可以编写一个小脚本,在目录中的文件上循环并将它们复制到目标

    string fileName = string.Empty;
    string destFile = string.Empty;
    string sourcePath = @"C:\test1";
    string targetPath = @"C:\test2";   
    
    // Create a new target folder, if necessary. 
    if (!System.IO.Directory.Exists(targetPath))
    {
        System.IO.Directory.CreateDirectory(targetPath);
    }
    
    if (System.IO.Directory.Exists(sourcePath))
    {
        string wildcard = "*.txt";
        string[] files = System.IO.Directory.GetFiles(sourcePath, wildcard);
    
        // Copy the files and overwrite destination files if they already exist. 
        foreach (string s in files)
        {
            fileName = System.IO.Path.GetFileName(s);
            destFile = System.IO.Path.Combine(targetPath, fileName);
            System.IO.File.Copy(s, destFile, true);
        }
    }
    else
    {
        throw new Exception("Source path does not exist!");
    }
    
    参考:

  • 使用文件系统任务
  • 您可以参考以下链接之一,了解
    文件系统任务的工作原理


    为什么不使用脚本组件将这些文件夹中的所有文件复制到指定文件夹中?请举个例子。您是否尝试过文件系统任务?没有。由于我是ssis世界的新手,我想通过类似的例子或项目,你能给我举个例子吗?或者建议我参加任何一个项目,为什么要把它复杂化?只需使用命令任务并运行
    COPY c:\Source\*.txt c:\Destination
    ,正如另一个答案所示,我是ssis新手,因此一个带有屏幕截图的示例将非常有用。您可以分享一个示例或演练项目吗。非常感谢您尝试帮助我。如果您只需使用命令任务并按照另一个命令运行
    COPY c:\Source\*.txt c:\Destination
    ,那么这就太复杂了answer@Nick.McDermaid我喜欢借此机会通过foreach循环演示文件处理的使用。这种学习体验除了简单地复制文件(我们知道这不是SSIS的预期目的)外,还提供了其他用途。在这种情况下,我会使用你的解决方案。太棒了。。。。非常感谢,我要试试第二种选择。非常感谢你的帮助。