Oracle
 sql >> Base de données >  >> RDS >> Oracle

Transformer DT_TEXT dans SSIS 2012 pour Oracle CLOB

Il s'avère que SSIS Script Component won' ne pas autoriser la sortie de flux de texte j'avais la réponse, mais je devais comprendre ce que les champs signifiaient dans la réponse.

Je vais vous expliquer toutes les parties, donc c'est clair ce qui se passe.

Le composant de script a une sortie appelée Sortie 0, avec des colonnes de sortie ForecastXML. Ce sont des noms par défaut à l'exception du dernier. ForecastXML a le type de données de flux de texte [DT_TEXT]

Dans le script lui-même, j'ai une chaîne appelée ForecastXML (ouais, même nom, ce qui rend le tout confus.)

Après avoir rempli la chaîne ForecastXML avec des données, je peux l'affecter au Output0Buffer avec les lignes suivantes :

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

La première ligne fonctionne pour tous les types de données. Parce que j'écris dans un NTEXT, la deuxième ligne est nécessaire, plutôt qu'une affectation directe. Le Output0Buffer.forecastXML fait référence au type de données NText défini dans ma sortie 0. Le dernier est ma chaîne du code.

Pour être plus clair, plutôt que de créer une chaîne, j'aurais dû

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

où oResut.XmlResult est le résultat de mon appel qui obtient le XML. L'assigner à une chaîne est une étape supplémentaire inutile.

Cela va à un CLOB Oracle, donc l'étape suivante consiste à prendre cette sortie dans une colonne dérivée et à convertir ma sortie ForecastXML en (DT_NTEXT)forecastXML. (Je soupçonne que je fais des changements de types inutiles.)

Et puis, je mappe ce champ à mon champ CLOB dans ma destination OLE DB.