【问题标题】:Transform DT_TEXT in SSIS 2012 for Oracle CLOB在 SSIS 2012 中为 Oracle CLOB 转换 DT_TEXT
【发布时间】:2019-08-06 17:26:23
【问题描述】:

我正在使用 SSIS 2012。我有一个带有 DT_TEXT 类型输出列的脚本组件。 (它是来自网页的 XML。)

我有一个使用 OLE DB 的本机 OLD DB\Oracle 提供程序的 OLE DB 目标,并且该字段的表定义为 CLOB。

这个问题看起来很相似:SSIS Script Component won't allow text Stream Output。这似乎给出了答案:http://www.rad.pasfu.com/index.php?/archives/35-How-to-Fill-NTEXT-Column-from-Script-Component-SSIS.html

在脚本组件中,我将我的 XML 作为字符串获取,文档说它最多可以容纳 2GB。我很难将它分配给我的 Output0Buffer (DT_TEXT)。任何使用 AddBlobData 的尝试都会出错。

  // Output0Buffer.AddRow();
  // Output0Buffer.forecastXML = forecastXML;
  // Output0Buffer.AddBlobData(forecastXML);
  // Output0Buffer.LargeCol.AddBlobData(forecastXML);
  // Output0Buffer.LargeCol.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));

这些是我的一些尝试,但没有一个编译成功。最后一个给出错误:“Output0Buffer”不包含“LargeCol”的定义,并且找不到接受“Output0Buffer”类型的第一个参数的扩展方法“LargeCol”(您是否缺少 using 指令或程序集引用? )

如何从脚本组件获取文本流到 oracle 目的地?

【问题讨论】:

    标签: unicode oracle11g ssis ssis-2012


    【解决方案1】:

    原来SSIS Script Component won't allow text Stream Output 确实有答案,但我必须弄清楚答案中的字段是什么意思。

    我会解释所有部分,所以很清楚发生了什么。

    脚本组件有一个称为输出 0 的输出,输出列为 forecastXML。除了最后一个之外,这些都是默认名称。 ForecastXML 的数据类型为文本流 [DT_TEXT]

    在脚本本身中,我有一个名为 forecastXML 的字符串(是的,同名,这让人困惑。)

    用数据填充字符串 forecastXML 后,我可以使用以下几行将其分配给 Output0Buffer:

    String forecastXML = oResult.XmlResult;
    Output0Buffer.AddRow();
    Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));
    

    第一行适用于所有数据类型。因为我正在写一个 NTEXT,所以需要第二行,而不是直接赋值。 Output0Buffer.forecastXML 指的是我的输出 0 中定义的 NText 数据类型。最后一个是我的代码中的字符串。

    为了更清楚,而不是创建一个字符串,我应该有

    Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));
    

    其中 oResut.XmlResult 是我调用获取 XML 的结果。将其分配给字符串是一个额外的、不需要的步骤。

    这将转到 Oracle CLOB,因此下一步是将该输出带到派生列并将我的输出 forecastXML 转换为 (DT_NTEXT)forecastXML。 (我怀疑我正在对类型进行一些不必要的更改。)

    然后,我将该字段映射到我的 OLE DB 目标中的 CLOB 字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 2015-03-01
      • 2017-05-22
      • 2015-04-11
      相关资源
      最近更新 更多