sql >> Base de Datos >  >> RDS >> Oracle

Transforme DT_TEXT en SSIS 2012 para Oracle CLOB

Resulta que SSIS Script Component no t permitir salida de flujo de texto tenía la respuesta, pero tenía que averiguar qué significaban los campos en la respuesta.

Explicaré todas las partes, para que quede claro lo que está pasando.

El componente de secuencia de comandos tiene una salida llamada Salida 0, con columnas de salida ForecastXML. Esos son nombres predeterminados, excepto el último. ForecastXML tiene el tipo de datos de flujo de texto [DT_TEXT]

En el script en sí, tengo una cadena llamada forecastXML (sí, el mismo nombre, lo que lo hace confuso).

Después de llenar la cadena forecastXML con datos, puedo asignarla al Output0Buffer con las siguientes líneas:

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

La primera línea funciona para todos los tipos de datos. Debido a que estoy escribiendo en un NTEXT, se necesita la segunda línea, en lugar de una asignación directa. Output0Buffer.forecastXML se refiere al tipo de datos NText definido en mi Salida 0. El último es mi cadena del código.

Para ser más claro, en lugar de crear una cadena, debería tener

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

donde oResut.XmlResult es el resultado de mi llamada que obtiene el XML. Asignarlo a una cadena es un paso adicional innecesario.

Esto va a un CLOB de Oracle, por lo que el siguiente paso es llevar esa salida a una columna derivada y convertir mi pronósticoXML de salida como (DT_NTEXT)forecastXML. (Sospecho que estoy haciendo algunos cambios de tipos innecesarios).

Y luego, asigno ese campo a mi campo CLOB en mi Destino OLE DB.