【问题标题】:SSIS dynamic connection to the source and destination.SSIS 到源和目标的动态连接。
【发布时间】:2015-07-04 03:28:33
【问题描述】:

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

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

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

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

【问题讨论】:

  • 为什么你有 100 个不同的客户数据库?只是好奇
  • 每个客户在我的服务器中都有自己的数据库,具有不同的 Proc、视图和密钥。

标签: sql-server excel dynamic ssis connection


【解决方案1】:

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

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

  • 集合选项卡的循环编辑窗口中,选择“Foreach 文件枚举器”
  • 选择您的文件夹,使用通配符过滤掉 Excel 文件(如果需要),然后选择完全限定名称
  • 创建用于存储文件路径的变量并在选项卡变量映射中选择此变量。 (在每个循环中,新的文件路径都会保存在这个变量中)。

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

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 连接。


将此答案用作建议,也许它需要 soma 才能发挥作用。但根据我的经验,这种方法应该可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多