Oracle
 sql >> Database >  >> RDS >> Oracle

Trasforma DT_TEXT in SSIS 2012 per Oracle CLOB

Si scopre che Il componente script SSIS non vincerà t consentire l'output del flusso di testo aveva la risposta, ma dovevo capire cosa significavano i campi nella risposta.

Spiegherò tutte le parti, quindi è chiaro cosa sta succedendo.

Il componente Script ha un output chiamato Output 0, con colonne di output forecastXML. Questi sono nomi predefiniti tranne l'ultimo. forecastXML ha il tipo di dati del flusso di testo [DT_TEXT]

Nello script stesso, ho una stringa chiamata forecastXML (sì, lo stesso nome, il che rende confuso.)

Dopo aver riempito di dati la stringa forecastXML, posso assegnarla a Output0Buffer con le seguenti righe:

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

La prima riga funziona per tutti i tipi di dati. Poiché sto scrivendo a un NEXT, è necessaria la seconda riga, piuttosto che un compito diretto. Output0Buffer.forecastXML si riferisce al tipo di dati NText definito nel mio Output 0. L'ultimo è la mia stringa dal codice.

Per essere più chiari, invece di creare una stringa, dovrei avere

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

dove oResut.XmlResult è il risultato della mia chiamata che ottiene l'XML. Assegnarlo a una stringa è un passaggio aggiuntivo non necessario.

Questo sta per un CLOB Oracle, quindi il passaggio successivo è portare quell'output in una colonna derivata e lanciare il mio output forecastXML come (DT_NTEXT)forecastXML. (Sospetto di apportare alcune modifiche non necessarie ai tipi.)

E poi, mappo quel campo al mio campo CLOB nella mia destinazione OLE DB.