【问题标题】:SSIS w/ Entity Framework带实体框架的 SSIS
【发布时间】:2012-09-28 15:23:16
【问题描述】:

我正在使用非规范化的 Access DB 并将其移动到基于 EF 4 的 SQL 中的规范化表中。

假设我在 Access DB 中有以下内容

-------------------
|  NAME  | FRUIT  |
-------------------
| John   | Apple  |
| Jane   | Apple  |
| Mark   | Orange |
| Nancy  | Orange |
| Jim    | Apple  |
-------------------

我正在用 SQL 创建以下两个数据库

tblNames:

-------------------------------
|   ID   |  Name  |  FruitID  |
-------------------------------
|    1   |  John  |     1     |
|    2   |  Jane  |     1     |
|    3   |  Mark  |     2     |
|    4   |  Nancy |     2     |
|    5   |  Jim   |     1     |
-------------------------------

tblFruits:

--------------------
|   ID   |  Fruit  |
--------------------
|    1   |  Apple  |
|    2   |  Orange |
--------------------

在我的数据流中,我可以使用派生列提取名称(表实际上更大,我正在做一些数据类型转换)。但是,如何从派生列获取输出,并将每一行的输出与水果表的正确 ID 匹配,从而生成需要插入 tblNames 数据库的正确输出?

【问题讨论】:

    标签: entity-framework ssis ssis-data-flow


    【解决方案1】:

    假设在填充 tblNames 的数据流之前已经填充了 tblFruits,您需要将 Lookup Transformation 添加到序列中,以便您可以检索给定 Fruit 的正确 tblFruits.ID。

    您没有指定您使用的是哪个版本的 SSIS,但需要注意的是它希望始终在目标表中找到匹配项。在 2005 年,找不到匹配项与表不存在或您缺少权限的错误相同,这很痛苦。 2008+ 允许您识别在目标表中未找到匹配项的行。

    使用查找时要记住的最重要的事情是,您应该只拉回您需要的列。表格选择器很方便,但不要偷懒并单击它。它会消耗比你需要的更多的资源,而你所知道的只是“SSIS 速度太慢而且是个垃圾”。

    其他有用且未经询问的建议是不要在派生列中执行太多操作。相反,请使用具有紧密焦点的多个派生列。听起来违反直觉,但 SSIS 引擎可以通过这种方式更好地并行化操作。

    我不确定 EF 标记是如何应用的,但也许我遗漏了问题的一些细微差别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-26
      • 2019-11-11
      • 2018-09-22
      • 2011-08-08
      • 2014-03-24
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多