スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FETCHの使い方(ファイルを次々読み込む)

ファイル一覧リストがあり、それぞれのファイルを取り込むための処理サンプル。
以前はVBでfor文を回していたが、そのfor文をSQLで書くとこんな感じ。
FETCHを使っています。

以下のサンプルは、『「List.txt」に書かれてあるファイルをすべてテーブルに取り込む』というもの。
ちなみに、List.txtにはフルパスで書かれていてる前提です。
また、バルクで取り込んでいるので、そのための「フォーマットファイル」もある前提です。





print CONVERT(char(12), GETDATE(), 14)

/*--- 取込対象リスト ----------------------------*/
CREATE TABLE #T_temp_TargetFile (
[fn] char(255) not null primary key
);

BULK INSERT #T_temp_TargetFile
FROM 'C:\temp\List.txt'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
;

/*--- 取込開始 -----------------------------------*/
DECLARE FNLIST CURSOR FOR
SELECT fn from #T_temp_TargetFile
;
DECLARE @fn nvarchar(255);

OPEN FNLIST;

FETCH NEXT FROM FNLIST INTO @fn
WHILE @@FETCH_STATUS = 0
BEGIN

declare @charind int ;
set @charind = 1 ;

print '--- 取込 -------------------------------'
exec('
BULK Insert T_temp
From ''' + @fn + '''
With (Formatfile=''C:\temp\formatfile.txt'')
;
') ;

print cast(@@rowcount as nvarchar) + '件取込' ;

-- 次へループ
FETCH NEXT FROM FNLIST INTO @fn ;
END

CLOSE FNLIST ;

-- 後処理 -----;
deallocate FNLIST
drop table #T_temp_TargetFile


print CONVERT(char(12), GETDATE(), 14)
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。