@echo off
::
:: DBのgzip圧縮されたデータファイルを、テーブル毎にloadするスクリプト。
:: カレントフォルダにデータファイルがあるテーブルのみを対象とし、全てのデータを入れ替える。
:: 「入れ替えたいテーブルのデータだけをカレントフォルダに配置して、本バッチを実行」すればよい。
:: もしくは「入れ替えたいテーブル名を引数に指定(9ヶまで)して、本バッチを実行」すればよい。
::
:: ※ DBコマンドウィンドウで、DB2操作可能ユーザ(db2admin等)が実行すること。
:: ※ 実行には、gzip.exeが必要
::    gzip.exe : http://gnuwin32.sourceforge.net/packages/gzip.htm
::
:: @author K.Jomura ( kazuhiko@jomura.net http://jomura.net/ )
:: @version 2011/05/20


:: 対象データベース名
set DATABASE_NAME=Sample

:: 対象テーブルスキーマ名(大文字)
set SCHEMA_NAME=DB2ADMIN


:: 以下、編集の必要なし

setlocal enabledelayedexpansion

db2 connect to %DATABASE_NAME%

if not "%*" == "" (
	set TABLES=%*
) else (
	set TABLES=
	db2 -x -z_table.list select tabname from syscat.tables where tabschema = '%SCHEMA_NAME%' and ownertype = 'U' and type = 'T' order by tabname > nul
	for /f %%L in (_table.list) do  (
		set TABLES=!TABLES! %%L
	)
	del _table.list
)

for %%i in (%TABLES%) do @call :load %%i

db2 connect reset

endlocal

exit /b

:load
	if exist %1.del.gz (
		echo Uncompressing %1.del...
		gzip -dk %1.del.gz
		echo Loading %1 ...
		db2 load from %1.del of DEL REPLACE INTO %1 NONRECOVERABLE > nul
		del %1.del
		exit /b
	)
	if exist %1.del.split.aa.gz (
		echo Uncompressing %1.del.split.*...
		gzip -dk %1.del.split.*.gz
		ren %1.del.split.*.gz %1.del.splited.*.gz
		copy /b %1.del.split.* %1.del
		del %1.del.split.*
		echo Loading %1 ...
		db2 load from %1.del of DEL REPLACE INTO %1 NONRECOVERABLE > nul
		del %1.del
		ren %1.del.splited.*.gz %1.del.split.*.gz
		exit /b
	)
