首页 > 编程 > ASP > 正文

asp+Access通用的自动替换数据库中的字符串

2024-05-04 11:09:23
字体:
来源:转载
供稿:网友
几年前写的一个脚本,可以自动进行整库的数据替换。
 
 
 

当初只是为了玩玩写的,没想到写了之后不断有人询问,所以改写了一下代码,完善了一下,支持了正则替换,避开了会导致出错的二进制(ole对象),并且做了一个EXE的程序。感谢虚拟帮忙。 
附asp代码: 

复制代码代码如下:

<% 
'#################################### 
'批量替换数据库内容2008-3-17 
'替换是不可逆的,所以操作前做好能备份 
'#################################### 
Dim 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 '遍历所有字段 
If Rs2(i).Properties("ISAUTOINCREMENT") = False And Rs2(i).Type<>128 And 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 
%> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表