sql >> データベース >  >> RDS >> Oracle

SSIS 2012 で DT_TEXT を Oracle CLOB 用に変換する

    SSIS スクリプト コンポーネントが勝てないことがわかりました。テキスト ストリーム出力を許可しない 答えはありましたが、答えのフィールドが何を意味するのかを理解する必要がありました.

    すべての部分を説明するので、何が起こっているのかは明らかです。

    スクリプト コンポーネントには、Output 0 と呼ばれる出力があり、出力列はforecastXML です。これらは、最後を除いてデフォルトの名前です。 ForecastXML のデータ型はテキスト ストリーム [DT_TEXT] です

    スクリプト自体には、forecastXML という文字列があります (同じ名前なのでわかりにくいです)。

    文字列forecastXMLにデータを入力した後、次の行でそれをOutput0Bufferに割り当てることができます:

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

    最初の行は、すべてのデータ型で機能します。私は NTEXT に書き込んでいるので、単純な代入ではなく 2 行目が必要です。 Output0Buffer.forecastXML は、出力 0 で定義された NText データ型を参照します。最後のものは、コードからの文字列です。

    より明確にするために、文字列を作成するのではなく、

    を使用する必要があります
    Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));
    

    ここで、oResut.XmlResult は、XML を取得する呼び出しの結果です。文字列への代入は余分な不要な手順です。

    これは Oracle CLOB に送信されるため、次のステップは、その出力を派生列に取得し、出力のforecastXML を (DT_NTEXT)forecastXML としてキャストすることです。 (不必要な型の変更を行っているのではないかと思います。)

    次に、そのフィールドを OLE DB Destination の CLOB フィールドにマップします。




    1. PostgreSQLはテーブル(フラグメント)の透過的な圧縮をサポートしていますか?

    2. ASP.NET5のMySQLでEntityFramework6を使用するにはどうすればよいですか?

    3. バージョン5以降のMySQLデータベースの最大サイズはいくつですか?

    4. Oracle SQL Developerでテーブルを作成する方法は?