到源和目标的SSIS动态连接



嗨,我想创建一个SSIS包,将excel文件加载到客户数据库中。

我有100个客户数据库,我还有每周100个excel文件(所有数据库和文件具有相同的结构)数据库的名称为CustomerName,excel文件名为CustomerName_date。

我想创建一个每周运行一次的作业,使用ssis包,将文件夹中的所有excel文件加载到客户数据库,并将文件传输到存档文件夹。

与源和目的地的动态连接的最佳原因是什么。

此任务可以使用变量和表达式来完成。最困难的部分将是为OLE DB连接创建工作连接字符串。

1) 要处理文件夹中的每个文件,请使用Foreach循环。

  • 集合选项卡的循环编辑窗口中,选择"Foreach File Enumerator">
  • 选择您的文件夹,使用wildcart筛选出Excel文件(如果需要),然后选择完全限定名称
  • 创建用于存储文件路径的变量,并在选项卡变量映射中选择此变量。(在每个循环中,新的文件路径将保存在此变量中)

2)基于其中一个Excel文件创建新的Excel文件连接,右键单击它,然后在"表达式"中为连接字符串创建表达式。在表达式编辑器中,将其设置为使用yout文件变量。

3) 然后,我们需要为OLE DB连接创建连接字符串。

  • 创建新的变量来处理它
  • 创建OLE DB连接并将其连接到任何数据库
  • 然后右键单击您的连接并将连接字符串备份到其他位置,以便将来使用

4)在foreach循环中,创建脚本任务。

  • 在脚本任务编辑器中,选择ReadOnlyVariables(您的文件名)和ReadWriteVariables(准备好的连接字符串)
  • 单击编辑脚本,然后在新的VisualStudio窗口中创建脚本
  • 变量可以这样读写:

    string myValue=(string)Dts.Variables["User::"].Value;

  • 您可以从fileName变量中解析excel名称,并为OLE DB创建新的连接字符串,以匹配以前保存的连接字符串。

5)编辑OLE DB连接表达式并将连接字符串与变量匹配。

6) 在foreach循环中,创建数据流任务并双击它。使用Excel源,使其使用您的Excel连接。然后创建OLE DB目标并使其使用您的OLE DB连接。


用这个答案作为一个建议,也许它需要梭玛来发挥作用。但根据我的经验,这种方法应该有效。

最新更新