fc2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


2008年07月29日

OPENROWSET(BULK...) 関数

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 ]

この記事に対するコメント


この記事に対するコメントの投稿














管理者にだけ表示を許可する



この記事に対するトラックバック
トラックバックURL
http://comfair2.blog24.fc2.com/tb.php/381-ee7f52c9
この記事にトラックバックする(FC2ブログユーザー)