SQL Server 2005 ではOPENROWSET一括行セットプロバイダが導入されており、BULKオプションを指定してOPENROWSET関数を呼び出し、プロバイダにアクセスしてデータファイルなどを参照できます。
例えば、DBインストールマシンのDドライブ直下にsample.csvおよびsample.fmtを配置 [sample.csv]の内容 1,AAA 2,BBB 3,CCC ※[sample.fmt]の内容は割愛します。 -- 参照 select * from OPENROWSET( BULK 'D:\sample.csv', FORMATFILE = 'D:\sample.fmt' ) tbl 結果は以下のとおり col1 col2 ------------- 1 AAA 2 BBB 3 CCC さらにSQL Server 2008ではMERGE文が機能追加されており、これを利用すると一括インポート時に既存レコードは更新、新規レコードは追加という動作を一度に出来るようです。
-- MERGE文の使用例 MERGE INTO tbl1 USING OPENROWSET( BULK 'D:\sample.csv', FORMATFILE = 'D:\sample.fmt' ) tbl2 ON tbl1.col1 = tbl2.col1 WHEN MATCHED THEN UPDATE SET tbl1.col2 = tbl2.col2 WHEN NOT MATCHED THEN INSERT VALUES (tbl2.col1, tbl2.col2)
[ posted by kami ]
|