データのインポートとエクスポートWizardを使用して、CSVファイルの内容をMSSQLのテーブルにインポートしようとしています。
すべての列を文字列としてインポートしても問題はありませんが、1つの列を浮動小数点数にする必要があります。 (CSVでは、列4は小数点以下2桁の通貨金額です(例:$ 200.30))。
列4の値を浮動小数点数に設定すると、インポート中に次のエラーが表示されます。
エラー0xc02020a1:データフロータスク1:データ変換に失敗しました。列「列4」のデータ変換は、ステータス値2およびステータステキスト「データが失われる可能性があるため、値を変換できませんでした。」を返しました。 (SQL Serverインポートおよびエクスポートウィザード)
以下は、インポートするデータの例です。
+----+------+----------+-----------+--------+
| 1 | 2014 | December | 400089323 | 8.03 |
| 2 | 2014 | December | 400319749 | 45.65 |
| 3 | 2014 | December | 400377067 | 38 |
| 4 | 2014 | December | 400524693 | 0 |
| 5 | 2014 | December | 400536070 | 125.31 |
| 6 | 2014 | December | 400663546 | 266.95 |
| 7 | 2014 | December | 400705907 | 218 |
| 8 | 2014 | December | 400763025 | 244.39 |
| 9 | 2014 | December | 400782510 | 12.89 |
| 10 | 2014 | December | 400794040 | 61.04 |
+----+------+----------+-----------+--------+
これは、列4のデータ型です。
列2が「文字列[DT_STR]」である場合を除いて、残りの列は「数値[DT_NUMERIC]」です。
数値や通貨など、列4のさまざまなデータ型を試しました。これは機能しませんでした。
参考:SQL Server 2012を使用しています。
それを文字列としてインポートし、派生列を実行してそれを浮動小数点数に変換します。行が変換に失敗すると、エラー出力にリダイレクトされ、少なくとも問題が何であるかを確認できます。
フラットファイル接続は、問題が発生すると完全に失敗します。一般に、それらをできる限り緩くしてSSIS内に構造を追加する方が生産的です。
とにかくフロートを使いたくないでしょう。パッケージに入ったら、「numeric」を使用します。