0

SSIS を使用して、SalesForce データを SQL Server にインポートしています。SF には、"Live/Not Live" のような値を含む ntext フィールドがあります。これは、SQL Server でビット フィールドを使用して簡単に解釈できます。

SSIS を使用してこれらの ntext フィールドをブール値に変換する方法はありますか。派生列変換を使用してみましたが、次のエラーが発生します。

[挿入先 [807]] エラー: SSIS エラー コード DTS_E_OLEDBERROR。
OLE DB エラーが発生しました。エラー コード: 0x80040E21。OLE DB レコードが利用可能です。ソース: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80040E21 説明: "複数ステップの OLE DB 操作でエラーが発生しました。利用可能な場合は、各 OLE DB ステータス値を確認してください。作業は行われませんでした。".

[挿入先 [807]] エラー: SSIS エラー コード DTS_E_INDUCEDTRANSFORMFAILUREONERROR。エラー コード 0xC020907B が発生したため、"input "OLE DB Destination Input" (820)" が失敗しました。指定されたコンポーネントの指定されたオブジェクトでエラーが発生しました。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

[SSIS.Pipeline] エラー: SSIS エラー コード DTS_E_PROCESSINPUTFAILED。コンポーネント「Insert Destination」(807) の ProcessInput メソッドは、入力「OLE DB Destination Input」(820) の処理中にエラー コード 0xC0209029 で失敗しました。

識別されたコンポーネントが ProcessInput メソッドからエラーを返しました。エラーはコンポーネントに固有のものですが、エラーは致命的であり、データ フロー タスクの実行が停止します。これより前に、失敗に関する詳細情報を含むエラー メッセージが投稿される場合があります。

どんな助けでも大歓迎です。

4

1 に答える 1

2

NTEXTは、Unicodeテキストストリームです。ストリームでは多くのことを実行できないため、DT_STRやDT_WSTRなどのより管理しやすいものにする必要があります。テキストデータに国際化があるかどうかは、あなただけが知っていることです。いずれにせよ、データ変換トランスフォーメーションをSFソースに接続し、そのデータを非ストリームタイプにします(最大幅を指定します)。この操作の目的は、ストリームデータを取得し、それをストレートテキスト値(ライブ、ライブではない)に変換することです。この列は呼び出されると思いますIsLiveString

文字列型を処理しているので、派生列変換を変換出力に追加します。ここで、データ変換タスクから提供された値がTrue/Falseに評価されるかどうかを判断する式が必要になります。SQL ServerがそれLiveを1(true)に変換することを理解したとしても、その魔法が永遠に機能することに頼りたいと思う方法はありません。代わりに、新しい列IsLiveBooleanを作成しようとすると、([IsLiveString]=="Live") ? True : Falseその式は近似値であり、SSDT/BIDSのインスタンスではありません。等価性チェックの代わりに三項式を削除することで簡略化することもできます。IsLiveString列でNULL値を処理する必要がある場合は、三項演算子の構文により、その評価が容易になります。

編集

写真は千の言葉に値するので、この3kといくつかの変更を検討してください。これは、データフローのアクションを表します。簡単なクエリを使用して、例をPOCしました。「Live」と「NotLive」の値とNULLを持つデータ型ntextの列を生成します。ソースから、上記のようにデータ変換タスクを使用します。私はDT_WSTRを使用して、この回答を可能な限り幅広いオーディエンスに適用し、長さをデフォルトの50のままにしました。メモリ使用量を最適化するには、ソースシステムからの可能な限り長い値に一致するように長さを減らします。

データフロー

このようにして、派生列変換を構成しました。NULLを処理するためのオプションがあります。または、データにNULLがないことがわかっている場合は、最初のオプションが機能します。

派生列変換

結果。これにより、文字列が対応するブール値に正しく変換されることがわかります。次に、それらは宛先コンポーネントにパイプされます。

ここに画像の説明を入力してください

于 2012-12-04T00:53:13.687 に答える