ADOでテストデータ作成


項目数の多いテーブルにデータを作成するとき便利と思い、作成してみた。
Oracle10gで動作検証済。


TestDataCreate.vbs

'------------------------------------------------
'
'	テストデータ作成ツール (Oracle 用)
'
'------------------------------------------------

targetTable = InputBox("データを作成するテーブルを入力してください。","オブジェクトの指定","")

'定数の定義
Const adOpenDynamic = 2 
Const adOpenStatic = 3 

Const adLockOptimistic = 3 
Const adUseClient = 3 


'オブジェクト生成
Set objConn = CreateObject("ADODB.Connection") 
Set objRec = CreateObject("ADODB.Recordset") 
Set objRecData = CreateObject("ADODB.Recordset") 


'DB接続情報の記述
objConn.Open "Provider=MSDAORA.1;Password=****; User ID=****;Data Source=****;Persist Security Info=True" 
objRec.CursorLocation = adUseClient 
objRecData.CursorLocation = adUseClient 


'テーブル定義の取得
objRec.Open "SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '" & targetTable & "'" , objConn, adOpenStatic, adLockOptimistic 

'テーブルの取得(データの追加先)
objRecData.Open "SELECT * FROM " & targetTable & "" , objConn , adOpenDynamic, adLockOptimistic

objRecData.AddNew

colVal = 0

Do until objRec.EOF = true

	colVal = colVal + 1
	colName = objRec.Fields("COLUMN_NAME").Value
	colType = objRec.Fields("DATA_TYPE").Value
	colLen = objRec.Fields("DATA_LENGTH").Value

	IF colType = "DATE"	THEN
		
		'日付型なら固定値を編集
		objRecData.Fields(colName).Value = "1900/01/01"

	ELSE

		'桁数分、値を編集
		objRecData.Fields(colName).Value = Right(colVal,colLen)

	END IF

	objRec.MoveNext
Loop

objRecData.Update

objRec.Close 
objRecData.Close 
objConn.Close 


Msgbox "完了しました。"