SQL Server OPENROWSET 関数の bulk オプションでテキストファイルを MERGE(UPSERT)処理

SQL ServerOPENROWSET 関数bulk オプションは、SQL Server 2008 からの新機能である MERGE ステートメントでも利用することができます。これにより、一括インポート時に、データが既に存在する場合には UPDATE を、存在しない場合には INSERT 処理が行えるようになります(UPSERT 処理が可能です)。
インポートしたいファイルが、次の「C:\bulkTest2.csv」の場合は、

次のように MERGE 処理を記述できます。

MERGE INTO t1
 USING  OPENROWSET( BULK 'C:\bulkTest2.csv'
                   ,FORMATFILE = 'フォーマット ファイルへのパス' ) bulk1
  ON t1.a = bulk1.a
 WHEN MATCHED THEN
	UPDATE SET t1.b = bulk1.b
 WHEN NOT MATCHED THEN
	INSERT VALUES ( bulk1.a, bulk1.b );

フォーマット ファイルの作成方法は、こちらから
http://d.hatena.ne.jp/matu_tak/20091126/1259426263