6

我有一个包含多个文件的文件夹,其名称为

P04_20140326_1234.zip
P04_20130324_58714.zip
P04_20130808_jurhet.zip
P04_20130815_85893.zip
etc

名称的格式为 P04_systemdate_*.zip。

我想选择名称中包含 currentdate 的文件夹并首先将其解压缩,然后将提取文件中的数据加载到 table.eg 中:名为 A.txt 的文件进入表 A,名为 B 的文件进入表 B 等等。 ..

4

1 回答 1

15

我猜你已经做了以下事情:

  1. 添加一个Data Flow
  2. 在数据流中,添加一个flat file source, 和Ole_DB destination
  3. 将 配置flat file source为指向您的文件之一并连接所有适当的列,以便数据从文件流向数据库。

如果所有这些都已经正常工作,那么让我们执行 For-Each 循环

  1. 创建一个变量(默认为包根级别)并调用它CsvFileName的类型字符串
  2. 添加一个ForEach loop(不是 For 循环)
  3. 将循环类型更改为Foreach File Enumerator
  4. 设置文件夹路径并查找 *.csv
  5. 在变量映射下,添加变量“User::CsvFileName”变量,并将索引设置为 0 - 这意味着从 Foreach 循环返回的所有文件名都将显示在变量中。
  6. 在 Connection Managers(底部)中,右键单击FlatFileSource,然后选择属性
  7. 设置DelayValidation为“真”
  8. 单击表达式,然后单击省略号
  9. 设置ConnectionString属性以使用“CsvFileName”变量

运行。这应该加载所有文件。现在,如果您只想将其限制在某个日期,请执行以下操作:

  1. 创建一个名为“FilterDate”的变量
  2. 将值设置为您要设置的任何日期(例如 20140322)
  3. 在 ForEach 循环中,转到 Collections,然后单击 Expressions,然后单击省略号
  4. 将 FileSpec 属性设置为"*" + @[User::FilterDate] + "*.csv"

现在它只会过滤你想要的文件。

于 2014-03-26T20:43:29.300 回答