如何使用动态文件名SSIS将excel文件中的数据提取到数据库中

时间:2018-02-19 03:39:45

标签: ssis ssis-2008

请问你帮忙吗?

我的问题是在源文件中使用动态文件名将数据从excel加载到数据库中。

例如,本月,我的文件名是ABC 31122017.xlsx。我成功地将此excel文件中每个选项卡的数据加载到数据库中。

但我如何让它变得动态?比如下个月我有excel文件 ABC 31012018.xlsx。如何使作业动态化以获取新文件?

我能把日期放在变量中,但我不知道如何在SSIS中继续使用文件路径。

@[User::InputPath] + "ABC " +  @[User::Report_DT_DDMMYYYY] + ".xlsx"    

我已经在Connection中的表达式中使用了它,设置了ExcelFilePath,但它无法正常工作。

与SSIS中的Excel Source连接器一样,我已经选择了31122017.xlsx并选择了第一个选项卡。但在我输入表达式后,它无法找到我选择的第一个标签。

请帮帮我们。谢谢。

2 个答案:

答案 0 :(得分:1)

可能以下解释将帮助您克服这个问题(我有SSIS 2012) -

  1. 第一个SSIS变量将保存日期值,即" 20180218"。变量名称 - TodayDate。此变量值将根据今天的日期更改。
  2. 第二个SSIS变量将保存FileName,即"" D:\ SSIS \ StackOverFlowTest1 \ InputFiles \ AB" + @ [User :: TodayDate] +" .xlsx"。变量名称 - FileNameExcel。
  3. 为excel创建连接管理器,并在其属性窗口下更改表达式并将ExcelFilePath设置为" FileNameExcel"。enter image description here
  4. 更改"延迟验证"根据"数据流任务"属性。enter image description here

答案 1 :(得分:0)

使用foreach:

  1. 设置一个字符串变量fileName(放入实际的文件路径/文件名中,以便开发包。
  2. 添加Foreach循环(默认为文件枚举器)
  3. 为Directory设置表达式= @InputPath
  4. 将文件设置为excel文件的正确掩码(即" ABD * .xlsx")
  5. 转到变量映射并链接到fileName
  6. 添加Excel连接并连接到您的实际文件。
  7. 在属性上设置表达式为ExcelFilePath = @fileName
  8. 延迟验证
  9. 正常开发您的数据流。