SSIS与源和目标的动态连接。

时间:2015-04-25 13:36:53

标签: sql-server excel dynamic ssis connection

您好我想创建一个将Excel文件加载到客户数据库中的SSIS包。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

  • 收藏夹标签中的循环编辑窗口中,选择" Foreach文件枚举器"
  • 选择您的文件夹,使用Wildcart过滤掉Excel文件(如果需要),然后选择完全限定名称
  • 创建用于存储文件路径的变量,并在选项卡 Variable Mappings 中选择此变量。 (在每个循环中,新文件路径将保存在此变量中。)

2)根据您的一个Excel文件创建新的 Excel文件连接,右键单击它并在表达式中为连接字符串创建Expression。在表达式编辑器中,将其设置为使用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连接表达式并将Connection String与变量匹配。

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

使用此答案作为建议,也许在它起作用之前需要使用soma。但根据我的经验,这种方法应该有效。