SQL Server bcp でデータが二重引用符で囲まれている場合のフォーマット ファイルの作成方法
SQL Server の bcp コマンドで、データが二重引用符(”)で囲まれている場合のフォーマット ファイルは、ちょっとコツが必要です。たとえば、次のようにインポート先のテーブルとインポートしたいデータがあるとします。
-- インポート先のテーブル 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 を利用する場合には、データが二重引用符で囲まれていても、わざわざフォーマット ファイルを作成することなく、簡単にデータをインポートすることができます。