Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Transformar DT_TEXT no SSIS 2012 para Oracle CLOB


Acontece que Componente de script SSIS não t permitir saída de fluxo de texto tinha a resposta, mas eu tinha que descobrir o que os campos significavam na resposta.

Vou explicar todas as partes, para que fique claro o que está acontecendo.

O Script Component tem uma saída chamada Output 0, com Output Columns forecastXML. Esses são nomes padrão, exceto o último. forecastXML tem o tipo de dados de fluxo de texto [DT_TEXT]

No próprio script, tenho uma string chamada forecastXML (sim, mesmo nome, o que o torna confuso.)

Após preencher a string forecastXML com dados, posso atribuí-la ao Output0Buffer com as seguintes linhas:
String forecastXML = oResult.XmlResult;
Output0Buffer.AddRow();
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));

A primeira linha funciona para todos os tipos de dados. Como estou escrevendo para um NTEXT, a segunda linha é necessária, em vez de uma atribuição direta. O Output0Buffer.forecastXML refere-se ao tipo de dados NText definido em minha saída 0. A última é minha string do código.

Para ser mais claro, em vez de criar uma string, eu deveria ter
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));

onde oResut.XmlResult é o resultado da minha chamada que obtém o XML. Atribuí-lo a uma string é uma etapa extra e desnecessária.

Isso vai para um Oracle CLOB, então a próxima etapa é levar essa saída para uma Coluna Derivada e converter minha previsãoXML de saída como (DT_NTEXT)forecastXML. (Suspeito que estou fazendo algumas mudanças desnecessárias de tipos.)

E, em seguida, mapeio esse campo para meu campo CLOB em meu destino OLE DB.