SQL Server OPENROWSET 関数の bulk オプションでテキストファイルを MERGE(UPSERT)処理
SQL Server の OPENROWSET 関数の 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