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

时间:2017-12-11 13:01:07

标签: sql-server ssis etl sql-server-data-tools

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

任何帮助都非常感激。

3 个答案:

答案 0 :(得分:1)

有三种方法可以在SSIS中的目录之间复制文件:

  1. 使用执行流程任务
  2. 您可以使用类似的命令来复制文件:

    COPY c:\Source\*.txt c:\Destination
    
    1. 使用脚本任务
    2. 您可以编写一个小脚本,循环遍历目录中的文件并将其复制到目标

      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!");
      }
      

      参考:Copying all files in SSIS without Foreach

      1. 使用文件系统任务
      2. 您可以参考以下某个链接,了解File System Task的工作原理

答案 1 :(得分:0)

在脚本组件中:

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

未经测试,但有类似的内容

答案 2 :(得分:0)

使用C#可以更加具体,但是你可以使用foreach文件枚举器。

将路径映射到父文件夹,然后选择遍历子文件夹。

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

将完整路径映射到变量。

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