数年前に私が書いたスクリプトは、データベース全体のデータを自動的に置き換えることができます。
最初は遊びで書いたのですが、書いた後も質問されるとは予想外だったので、コードを書き直して改良し、定期的な置き換えをサポートし、原因となるバイナリ (ole オブジェクト) を回避しました。エラーが発生したため、EXEプログラムを作成しました。仮想ヘルプをありがとう。
添付されたASPコード:
次のようにコードをコピーします:<%
'###################################
'データベース コンテンツ 2008 を一括置換します。 -3-17
'交換は元に戻せないため、操作前にバックアップを作成してください
'############################### ### #
薄暗いDb,conn,Rs1,Rs2,Str1,Str2,I,Re
str1=admi[0-z] '置換される文字列、通常をサポート
str2=1234'置換される文字
列 Db=db.mdb 'データベースアドレス
'不要次のように変更します。
「通常のオブジェクトの作成
Set Re=new RegExp
Re.IgnoreCase =True
Re.Global=True
Set」 Conn=Server.CreateObject(ADODB.Connection)
Conn.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&server.mappath(Db)
Set Rs1 = Conn.OpenSchema(20)
Do While Not Rs1.Eof
If UCase( Rs1(TABLE_TYPE))=TABLE then 'ユーザーテーブルの場合は
Set
操作を実行しますRs2=Server.Createobject(adodb.recordset)
Rs2.Open select * from [&Rs1(TABLE_NAME)],conn,1,3
Do While Not Rs2.Eof
For I=0 to Rs2.fields.count-1 'すべてのフィールドを走査します
Rs2(i).Properties(ISAUTOINCREMENT) = False かつ Rs2(i).Type<>128 の場合Rs2(i).Type<>204 And Rs2(i).Type<>205 then '自動番号ではなく、OLE オブジェクトでもない場合
Rs2(Rs2(i).name)=Myreplace(Rs2(i) ).value&)
End If
Next
Rs2.Movenext
Loop
Rs2.Close
Set Rs2=nothing
End If
Rs1.MoveNext
Loop
Rs1.Close
Set Rs1=Nothing
Conn.close
Set Conn=Nothing
Set Re=Nothing
Response.Write 置換
完了'カスタマイズされた置換関数
Function myreplace(byval Tstr)
If Tstr= Or isnull(Tstr) then
Exit Function
Else
Re.Pattern=Str1
myReplace =Re.Replace(Tstr,Str2)
End If
End Function
% >