Скрипт, который я написал несколько лет назад, может автоматически заменять данные во всей базе данных.
Сначала я написал это просто для развлечения, но не ожидал, что люди будут продолжать спрашивать об этом после того, как я его написал, поэтому я переписал код и улучшил его. Он поддерживал регулярную замену, избегал двоичных файлов (объектов 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 Тогда 'Если это не автоматический номер и не старый объект,
Rs2(Rs2(i).name)=Myreplace(Rs2(i ).value&)
End If
Next
Rs2.Movenext
Loop
Rs2.Close
Set Rs2=ничего
End If
Rs1.MoveNext
Loop
Rs1.Close
Set Rs1=Ничего
Conn.close
Set Conn=Ничего
Set Re=Ничего
Response.Write Замена
завершена'Настраиваемая функция замены
Function myreplace(byval Tstr)
Если Tstr= Или isnull(Tstr) Тогда
выход из функции
Else
Re.Pattern=Str1
myReplace =Re.Replace(Tstr,Str2)
End If
End Function
% >