SQL Server bcp でデータが二重引用符で囲まれている場合のフォーマット ファイルの作成方法

SQL Serverbcp コマンドで、データが二重引用符(”)で囲まれている場合のフォーマット ファイルは、ちょっとコツが必要です。たとえば、次のようにインポート先のテーブルとインポートしたいデータがあるとします。

-- インポート先のテーブル
USE sampleDB
CREATE TABLE t1
( a int
 ,b char(10) )

-- インポートしたいデータ(C:\bulkTest2.csv)
"1","XXX"
"2","YYY"
"3","ZZZ"

このようにデータが二重引用符で囲まれている場合は、次のフォーマット ファイルでは、「キャストした文字コードが正しくありません」エラーが発生してしまいます。

実行時のエラー

データが二重引用符で囲まれている場合は、次のようにフォーマット ファイルを記述するようにします。

フォーマット ファイルでは、\" を追加して、3列分を記述しています。先頭の " を処理するためにダミー列を 1列分記述しています(¥マークはエスケープ シーケンスです)。
このファイルを test2.fmt という名前で保存し、実行すると次のようになります。


このように、bcp コマンドでは、データが二重引用符で囲まれている場合にはフォーマット ファイルを利用しなければなりません。なお、Integration Services を利用する場合には、データが二重引用符で囲まれていても、わざわざフォーマット ファイルを作成することなく、簡単にデータをインポートすることができます。