【问题标题】:SSIS Cannot map the lookup column. NVARCHAR(MAX) errorSSIS 无法映射查阅列。 NVARCHAR(MAX) 错误
【发布时间】:2014-03-13 06:46:50
【问题描述】:

我正在编写 ETL。我在我的源数据库中创建了 View。我的视图是两个表的连接。现在,我需要从 View 中获取数据。但是 View 中有两列具有 nvarchar(max) 数据类型。

但是当我在 DFT 中执行查找操作时,我遇到了这个错误:

Cannot map the lookup column, 'Description', because the column data type is a binary large object block (BLOB).

我看过以下链接:

  1. SSIS Lookup By NVARCHAR(MAX) Column
  2. SSIS Lookup with Derived Columns

请注意,说明列可能包含大量文字。

附上图片供参考。谢谢你!

【问题讨论】:

  • 您可能需要将该列通过数据转换转换(从 ntext 到字符串)
  • 我已经尝试过了,但得到同样的错误
  • 您必须将 nvarchar(max) 转换为 nvarchar(4000)。它会工作得很好..
  • 正如 Maverick 提议的那样,您是否尝试过使用诸如 select ...,cast(description as nvarchar(400)) from view 之类的 sql 查询来读取查找转换中的视图?
  • 如果您有这两个表的键,您可以改为使用MERGE JOIN,然后进行条件拆分以比较这些列(如果有帮助)。

标签: sql-server ssis sql-server-2008-r2 etl


【解决方案1】:

什么是查找,查找转换支持任何数据类型的连接列,除了对于 DT_R4、DT_R8、DT_TEXT、DT_NTEXT 或 DT_IMAGE(即 BLOB)

我个人尽量避免在 SSIS 中处理 BLOB。将 BLOB 转换为具有最大值的 nvarchar 并将其处理,您应该没问题。

【讨论】:

    【解决方案2】:

    如果您在查找表中与之比较的列被分配了不同的约束,您可能会遇到此问题。

    例如:如果源表中的 custid 允许 NULL 但目标表的 custid 不允许 NULL 。您可能会收到此错误。

    【讨论】:

      猜你喜欢
      • 2022-08-12
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多