SSIS 动态连接到源和目标。

SSIS dynamic connection to the source and destination.

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

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

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

最好的原因是与源和目标的动态连接。

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

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

  • Collection选项卡中循环编辑window,select"Foreach File Enumerator"
  • Select 您的文件夹,使用通配符过滤掉 Excel 个文件(如果需要)并选择 完全限定名称
  • 创建用于存储文件路径的变量,并在选项卡 变量映射 select 中创建此变量。 (在每次循环中,新的文件路径将保存在这个变量中)。

2) 根据您的 excel 文件之一创建新的 Excel 文件连接,right-click 它并在表达式中创建表达式用于连接字符串。在表达式编辑器中,将其设置为使用你的文件变量。

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

  • 创建新变量来保存它。
  • 创建 OLE DB 连接 并将其连接到您的任何数据库。
  • 然后right-click您的连接并在其他地方备份连接字符串,以便您将来可以使用它。

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

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

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

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

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

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


使用此答案作为建议,可能需要 soma 试用才能起作用。但根据我的经验,这种方法应该有效。