sql >> Databasteknik >  >> RDS >> Oracle

Omvandla DT_TEXT i SSIS 2012 för Oracle CLOB

Det visar sig att SSIS Script Component vann' t tillåt textströmutmatning hade svaret, men jag var tvungen att ta reda på vad fälten betydde i svaret.

Jag ska förklara alla delar så att det är tydligt vad som händer.

Skriptkomponenten har en utdata som heter Output 0, med Output Columns forecastXML. Det är standardnamn förutom det sista. forecastXML har datatypen Textström [DT_TEXT]

I själva skriptet har jag en sträng som heter forecastXML (ja, samma namn, vilket gör det förvirrande.)

Efter att ha fyllt strängen forecastXML med data kan jag tilldela den till Output0Buffer med följande rader:

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

Den första raden fungerar för alla datatyper. Eftersom jag skriver till en NTEXT behövs den andra raden, snarare än en rak uppgift. Output0Buffer.forecastXML hänvisar till NText-datatypen som definieras i min Output 0. Den sista är min sträng från koden.

För att vara tydligare borde jag ha

i stället för att skapa en sträng
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));

där oResut.XmlResult är resultatet av mitt anrop som hämtar XML. Att tilldela den till en sträng är ett extra, onödigt steg.

Det här går till en Oracle CLOB, så nästa steg är att ta den utdata till en härledd kolumn och casta min output forecastXML som (DT_NTEXT)forecastXML. (Jag misstänker att jag gör några onödiga typbyten.)

Och sedan mappar jag det fältet till mitt CLOB-fält i min OLE DB-destination.




  1. Hur man listar alla tabeller i Oracle

  2. Optimeringskod i PL/SQL. Att göra det till rätta. Koden körs men inte korrekt

  3. SQL - Antal procent

  4. Behöver skapa en utlösare som ökar ett värde i en tabell efter infogning