Microsoft SQL Server Management Studio (ssms)を使って CSV ファイルからインポートするのに、手間取ったのでその時のメモ。

インポートする対象となるデータベースで右クリックし、[タスク] - [データのインポート]をクリック。すると「SQL Server インポートおよびエクスポート ウィザード」が起動する。
ssms-csv-import1

[次へ]を押し、[データソースの選択]で[フラット ファイル ソース]を選ぶ。すると、ファイルを選択できるようになるので、[参照]ボタンを押して、データ元となる CSV ファイルを選ぶ。ここで、CSVファイルの1行目が列名の場合は、[先頭データ行を列名として使用する]にチェックを入れておく。
ssms-csv-import2

次に気をつけるポイントは[マッピングの詳細]だが、もしテーブルに IDENTITY 属性を持った項目がある場合は、ここで以下のように [ID 挿入を許可する]にチェックを入れる必要がある。
ssms-csv-import4

また、以下のようなエラーが出るテーブルがあった。
- 実行しています (エラー)
メッセージ
エラー 0xc02020a1: データ フロー タスク 1: データ変換に失敗しました。列 "町域名カナ" のデータ変換から、状態値 4 と状態を示すテキスト "テキストが切り捨てられたか、または対象になるコード ページで 1 つ以上の文字が一致しませんでした。" が返されました。
 (SQL Server インポートおよびエクスポート ウィザード)
 
エラー 0xc020902a: データ フロー タスク 1: "出力列 "町域名カナ" (26)" が切り捨ての発生により失敗しました。"出力列 "町域名カナ" (26)" の切り捨て行の処理により、切り捨てによる失敗が示されます。ここに示されたコンポーネントのオブジェクトで切り捨てエラーが発生しました。
 (SQL Server インポートおよびエクスポート ウィザード)
 
エラー 0xc0202092: データ フロー タスク 1: データ行 0 で、ファイル "C:\work\BB\xxxxxxxx\郵便番号M.rpt" の処理中にエラーが発生しました。
 (SQL Server インポートおよびエクスポート ウィザード)
 
エラー 0xc0047038: データ フロー タスク 1: SSIS エラー コード DTS_E_PRIMEOUTPUTFAILED。コンポーネント "変換元 - 郵便番号M_rpt" (1) の PrimeOutput メソッドからエラー コード 0xC0202092 が返されました。パイプライン エンジンが PrimeOutput() を呼び出したときに、このコンポーネントからエラー コードが返されました。このエラー コードの意味はコンポーネントで定義されていますが、これは致命的なエラーであるため、パイプラインの実行は停止されました。このエラーの前に、エラーの詳細が記載されたエラー メッセージが報告されている可能性があります。
 (SQL Server インポートおよびエクスポート ウィザード)

このケースでは[データソースの選択]のところで[詳細設定]をクリックし、問題となっている列の[OutputColumnWidth] を大きくしておく必要があるようだ。
以上。