8

SSISデータインポートウィザードを使用して、タブ区切りのフラットファイル(TSVファイル)からSQLServer2005にデータをアップロードする際に問題が発生しました。SQL Server 2000で同等の手順を使用してもこの問題は発生しませんでした。また、SQL Serverのアップグレードが行われるかなり前から、インポートしようとしているファイルの内部構造が変更されていないことを確認しました。

問題は、数値データ型(smallint、floatなど)の列のすべての空白値が、インポート時にNULLではなく0に変換されることです。これは、これらのデータ全体でAVGを実行すると、誤った出力が得られることを意味します。

TSVファイルにはテキスト修飾子が含まれていませんが、一部のダミーデータで修飾子の使用をテストしても、この問題の解決にはつながりませんでした。

VARCHAR列にインポートすることでNULLを保持することは可能ですが、これは理想からはほど遠いものです。SSISインポート/エクスポートウィザードに、フラットファイルから数値データ型が0ではなくNULLの列に空白の値をインポートするように指示する方法はありますか?

4

1 に答える 1

2

@gbn: ご指摘ありがとうございます。この問題を回避する方法を見つけ、数値列に NULL 値を含むデータを SQL Server 2005 データベースに正常にインポートできたと思います。


他の誰かが同じ問題を抱えている場合:

フラット ファイル ソースから OLE DB 変換先へのデータ フロー タスクを作成することにより、(以前のようにdtswizardを使用するのではなく) Business Intelligence Development Studio のデータ フロー タスクを使用してデータをインポートしました。

[フラット ファイル ソース エディター] ボックスには、[ソースからの null 値をデータ フローの null 値として保持する] チェック ボックスがあります。これをチェックすると、この問題が解決するようです。

@gbn が指摘したように、このボックスはウィザードにありません。

于 2010-02-25T11:44:26.160 に答える