【问题标题】:Derived column mapping fails派生列映射失败
【发布时间】:2021-12-23 10:45:52
【问题描述】:

我正在将我的 oracle 表与 Azure SQL DB 表之间的数据映射。我需要从 Source 映射 name 字段,如下所示

Name
AX1 BD
A1 12
BC W1

在源代码中,我只需要映射空格之前的字符

Dest_Name
AX1
A1
BC

所以在 SSIS 中,我尝试在源和目标之间添加一个派生列

我在派生列中的位置如下所示

而且表达方式是这样的

SUBSTRING(NAME,1,FINDSTRING(NAME," ",1) - 1)

但是当我尝试执行任务时,我在派生列上收到以下错误

信息:DF 的 0x4004300C - ORA 房间移动,SSIS.Pipeline: 执行阶段开始。

错误:DF 处的 0xC0049067 - ORA 房间移动,派生列 [133]:An 评估函数时出错

错误:DF 处的 0xC0209029 - ORA 房间移动,派生列 [133]: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “衍生 列”失败,因为出现错误代码 0xC0049067,并且错误 “Derived Column.Outputs [Derived Column”上的行配置 Output].Columns[Trimmed_Name]" 指定错误时失败。错误 发生在指定组件的指定对象上。那里 可能是在此之前发布的错误消息,其中包含更多信息 失败

错误:DF 处的 0xC0047022 - ORA 房间移动,SSIS。管道:SSIS 错误 代码 DTS_E_PROCESSINPUTFAILED。组件上的 ProcessInput 方法 “派生列” (133) 失败,错误代码为 0xC0209029,而 处理输入“派生列输入”(134)。确定的 组件从 ProcessInput 方法返回错误。错误是 特定于组件,但错误是致命的,将导致 数据流任务停止运行。可能会发布错误消息 在此之前提供有关失败的更多信息。

我不确定我在这里缺少什么,非常感谢任何帮助

【问题讨论】:

  • 可能其中一个源列不包含空格,所以findstring() 和/或substring() 失败?
  • “在此之前可能会发布错误消息,其中包含有关失败的更多信息。”我们确实需要这些错误。
  • @没什么,我贴出了与错误信息相关的所有内容
  • @BillJetzer 如果字段没有空间我该如何处理?

标签: sql-server ssis etl derived-column


【解决方案1】:

我在 Oracle 源查询 Substr (NAME,1,instr(NAME,' ') - 1) 上添加了一个新字段并将其映射到目标而不是派生列

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 2020-03-27
    • 2011-11-17
    • 2015-12-13
    • 1970-01-01
    • 2013-12-22
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多