0

非構造化テキスト ファイルの解析に問題があります。データ型 DT_STR の 1 つの列にすべてをアップロードしようとしましたが、ファイルに「=」などの特殊文字があるため、エラーがスローされます。DT_TEXT データ型で試してみましたが、うまくいきました。しかし、列に対して操作を実行できません。「条件付き分割」で実行できるその列の空の行を削除する必要があります。しかし、条件:

[column 0]!=""

は機能せず、次のエラーがスローされます。

タイトル: Microsoft Visual Studio

データ フロー タスクのエラー [条件付き分割 [32]]: データ型 "DT_TEXT" と "DT_WSTR" は、二項演算子 "!=" と互換性がありません。オペランドの型を、操作の互換性のある型に暗黙的にキャストできませんでした。この操作を実行するには、一方または両方のオペランドをキャスト演算子で明示的にキャストする必要があります。

データ フロー タスク [条件付き分割 [32]] でのエラー: 二項演算 "[列 0] != """ の結果の型を設定しようとしましたが、エラー コード 0xC0047080 で失敗しました。

データ フロー タスク [条件付き分割 [32]] でのエラー: 式 "[列 0]!=""" の計算がエラー コード 0xC0047084 で失敗しました。式にゼロ除算などの解析時に検出できないエラーがあるか、メモリ不足エラーが発生している可能性があります。

データ フロー タスクのエラー [条件付き分割 [32]]: "条件付き分割.出力 [ケース 1]" の式 "[列 0]!=""" は無効です。

データ フロー タスクのエラー [条件付き分割 [32]]: "条件付き分割.出力 [ケース 1]" でプロパティ "式" を設定できませんでした。


追加情報:

HRESULT からの例外: 0xC0204006 (Microsoft.SqlServer.DTSPipelineWrap)


ボタン:

わかった

以前にC#スクリプトで解析を行いました。しかし、今はコーディングを避ける必要があります。このファイルを解析する方法についてのアイデアは大歓迎です。ありがとうございました

4

1 に答える 1

1

これを分解しましょう

データ型 "DT_TEXT" と "DT_WSTR" は二項演算子 "!=" と互換性がありません

[column 0]!=""空の文字列""が DT_WSTR であり、[column 0]DT_TEXT データ型である式があります。エラー メッセージが示すように、これらの型の間で等しくない条件をテストすることはできません。

列 0 を DT_WSTR に変換するか、単に長さを確認するかを検討します。LEN([column 0]) > 0

SSIS のやり方

より大きな問題は、ファイルが「非構造化テキスト ファイル」ではないことです。非常に構造化されています。列ヘッダーは 3 行目 (1 ベースのカウント) で、データは 5 行目から始まります。データ自体はここから固定幅に見えます。

SSISでそれをどのように処理しますか? Ragged Right タイプのフラット ファイル接続マネージャーを作成します。ヘッダー列がないことを示し、最初の 4 行をスキップします/データは 5 行目から始まります。幅を指定して列を作成すると、データ フローがよりシンプルになり、パッケージがより高速に実行されます。

于 2018-06-07T17:18:10.677 に答える