Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Transformieren Sie DT_TEXT in SSIS 2012 für Oracle CLOB

Es stellt sich heraus, dass die SSIS-Skriptkomponente gewinnt. Text-Stream-Ausgabe nicht zulassen hatte die Antwort, aber ich musste herausfinden, was die Felder in der Antwort bedeuteten.

Ich erkläre alle Teile, damit klar ist, worum es geht.

Die Skriptkomponente hat eine Ausgabe namens Ausgabe 0, mit Ausgabespalten previewXML. Dies sind Standardnamen mit Ausnahme des letzten. previewXML hat den Datentyp Textstream [DT_TEXT]

Im Skript selbst habe ich eine Zeichenfolge namens „forecastXML“ (ja, derselbe Name, was es verwirrend macht.)

Nachdem ich den String previewXML mit Daten gefüllt habe, kann ich ihn mit den folgenden Zeilen dem Output0Buffer zuweisen:

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

Die erste Zeile funktioniert für alle Datentypen. Da ich in einen NTEXT schreibe, wird die zweite Zeile benötigt und keine direkte Zuweisung. Output0Buffer.forecastXML bezieht sich auf den NText-Datentyp, der in meinem Output 0 definiert ist. Der letzte ist mein String aus dem Code.

Um klarer zu sein, sollte ich

haben, anstatt eine Zeichenfolge zu erstellen
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));

wobei oResut.XmlResult das Ergebnis meines Aufrufs ist, der das XML abruft. Das Zuweisen zu einer Zeichenfolge ist ein zusätzlicher, unnötiger Schritt.

Dies geht an ein Oracle CLOB, also besteht der nächste Schritt darin, diese Ausgabe in eine abgeleitete Spalte zu übernehmen und meine Ausgabe von previewXML als (DT_NTEXT)forecastXML umzuwandeln. (Ich vermute, ich mache einige unnötige Änderungen des Typs.)

Und dann ordne ich dieses Feld meinem CLOB-Feld in meinem OLE DB-Ziel zu.