纯真IP数据库转MDB/MSSQL/MySQL

九 16th, 2008

     在网站上经常用到根据客户IP显示城市的功能,如果只是简单的查询功能,直接用网上写好的纯真的IP数据库查询工具(如:114IP.NET)即可!如果想要该地区访客的统计什么的,网上下载的这些源码恐怕就无能为力了。这个时候就需要我们把纯真IP数据导入到数据库中。

    在Baidu上找了下,看到一篇通过导入纯真查询程序生成IP的数据库的文本格式到表A,然后再次用一个ASP文件来访问数据表A,把A表的IP转换到B表,这种方法我不是很赞成,而且有一定的局限行,比如要将纯真IP数据库转换成MDB格式,必须装Access,将纯真IP数据库转换成MSSQL必须安装MSSQL,转换城MYSQL必须安装MYSQL。即使安装了数据库还要安装IIS,对与新手操作可能有些麻烦了~

    我写了一个VBS的脚本,通过ADODB.Connection链接数据库,然后用ADODB保存到将纯真IP数据库转MDB数据库

Function Mappath(n)
	Mappath=Fso.getabsolutepathname(n)
End Function
 
Function IpToNum(Ip)
	IpNs=split(ip,".")
	IpN=IpNs(0)*S4+IpNs(1)*S3+IpNs(2)*S2+IpNs(3)*S1
	if err<>0 then IpN=0
	err.clear
	IpToNum=IpN
End Function
 
S1=256
S2=256*S1
S3=256*S2
S4=256*S3
on error resume next
Set Fso=CreateObject("Scripting.FileSystemObject")
Set Conn=CreateObject("ADODB.Connection")
Conn.open "provider=microsoft.jet.oledb.4.0;data source="&Mappath("dat.mdb")
 
Set Rs=CreateObject("ADODB.Recordset")
Rs.open "Select * from d",Conn,2,3
 
Set Fto=Fso.OpenTextFile(Mappath("dat.txt"))
Do while not Fto.atendofstream
	Rs.addnew
	Res=Split(Replace(Replace(Fto.Readline,"	",""),"  "," ")," ")
	Rs("s")=IpToNum(Res(0))
	Rs("e")=IpToNum(Res(1))
	Rs("c")=Res(2)
	Rs("h")=Res(3)
	Wscript.Echo "From "&Res(0)&" To "&Res(1)&" Updated."
	Rs.update
Loop
Rs.close

将纯真数据库转MSSQL数据库也很简单,只需改
Conn.open “driver={SQL Server}; server=(local);database= ;uid= ;pwd= ”

将纯真数据库转MYSQL数据库,只需改
Conn.open “Driver={mysql};database=[yourdatabase];uid=[username];pwd=[yourpassword];option=16386;”

目前还没有任何评论.