当前位置:Gxlcms > asp.net > asp.net下将纯真IP数据导入数据库中的代码

asp.net下将纯真IP数据导入数据库中的代码

时间:2021-07-01 10:21:17 帮助过:45人阅读

纯真IP数据包含381085条,可以通过下载的查询软件将数据解压为文本格式,并将其编码改为UTF8,否则在程序中读取中文会乱码!
下面为程序执行分析IP数据并插入到Sql Server的截图:



程序通过AJAX在客户端进行数据插入实时更新:
实现代码如下:
  1. <br>前端页面及javascript: <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> <br><html xmlns=”http://www.w3.org/1999/xhtml” > <br><head> <br><title>导入IP地址数据库-power by blog.atnet.cc</title> <br><style type=”text/css”> <br>body{font-size:14px;} <br>#log{border:solid 1px gold;width:400px;height:100px;padding:10px;background:gold;margin-bottom:15px;color:black;} <br>#recordLog{font-size:12px;} <br></style> <br><script type=”text/javascript” src=”/scripts/global.js”></script> <br><script type=”text/javascript”> <br>var log,reLog; //Log,RecordLog <br>var recordCount; //IP记录总数 <br>window.onload=function(){ <br>log=document.getElementById(“log”); <br>} <br>function startImport(){ <br>if(!document.getElementById(“submit_ifr”)){ <br>var elem=document.createElement(“iframe”); <br>elem.setAttribute(“id”,”submit_ifr”); <br>elem.setAttribute(“name”,”ifr”); <br>elem.style.cssText=”display:none”; <br>document.body.appendChild(elem); <br>document.forms[0].target=elem.name; <br>} <br>document.forms[0].submit(); <br>log.innerHTML=”正在上传数据!<br />”; <br>return false; <br>} <br>� <br>function insertIP(){ <br>log.innerHTML+=”开始分析数据…<br />”; <br>j.ajax.post(“/do.ashx?args=ImportIPData&action=init”,”", <br>function(x){ <br>var d=eval(x)[0]; <br>recordCount=d.count; <br>log.innerHTML+=”<font color=green>分析数据成功:<br />服务器地址:”+ <br>d.server+”,记录:”+recordCount+”条!<br /><div id='recordLog'></div>”; <br>//开始插入 <br>insert(); <br>}, <br>function(x){log.innerHTML+=”<font color=red>发生异常,已终止!</font>”;} <br>); <br>} <br>function insert(){ <br>if(!reLog)reLog=document.getElementById(“recordLog”); <br>var num=Math.floor(Math.random()*100); <br>j.ajax.post(“/do.ashx?args=ImportIPData&action=insert”,”num=”+num, <br>function(x){var d=eval(x)[0];reLog.innerHTML=”已经写入数据:”+(recordCount-d.count)+ <br>“条,队列:”+d.count+”条,本次写入:”+d.insertNum+”条”; <br>if(d.count!=0){insert();} <br>else{reLog.innerHTML=”恭喜,写入完毕!”;} <br>},function(x){alert(x);}); <br>} <br></script> <br></head> <br><body> <br><div style=”margin:60px 100px”> <br><div id=”log”>请填写相关数据,选择IP数据文件!</div> <br><form action=”/do.ashx?args=ImportIPData” method=”post” enctype=”multipart/form-data” target=”ifr”> <br>数据库IP:<input type=”text” name=”dbserver” value=”.” /><br /> <br>数据库名:<input type=”text” name=”dbname” value=”tp” /><br /> <br>数据表名:<input type=”text” name=”tbname” value=”ip” /><br /> <br>用  户  名:<input type=”text” name=”dbuid” value=”sa” /><br /> <br>密      码<input type=”password” name=”dbpwd” value=”123000″ /><br /> <br>IP文件:<input type=”file” name=”ipfile” value=”C:\Users\cwliu\Desktop\1.txt” /><br /> <br><button onclick=”return startImport();”>导入</button> <br></form> <br></div> <br></body> <br></html> <br> <br>注:j为一个自定义的javascript类库,中间包含了ajax功能的代码 <br>后台程序我们用来接收ajax发送的Post 请求: <br>代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>File:do.ashx?args=ImportIPData <br>public void ProcessRequest(HttpContext context) <br>{ <br>if (context.Request.RequestType == “POST”) <br>{ <br>string action = context.Request["action"]; <br>//提交IP数据 <br>if (string.IsNullOrEmpty(action) || action == “submit”) <br>{ <br>string dbserver = context.Request["dbserver"], tbname = context.Request["tbname"]; <br>StringBuilder sb = new StringBuilder(500); <br>sb.Append(“server=”).Append(dbserver).Append(“;database=”).Append(context.Request["dbname"]) <br>.Append(“;uid=”).Append(context.Request["dbuid"]).Append(“;pwd=”).Append(context.Request["dbpwd"]); <br>//保存数据库连接字符串及数据表名 <br>HttpContext.Current.Session["ip_dbconnstring"] = sb.ToString(); <br>HttpContext.Current.Session["ip_tablename"] = tbname; <br>//读取IP数据并缓存 <br>IList<string> ipList = new List<string>(); <br>HttpPostedFile file = context.Request.Files[0]; <br>using (StreamReader sr = new StreamReader(file.InputStream, Encoding.UTF8)) <br>{ <br>while (sr.Peek() != -1) <br>{ <br>ipList.Add(Regex.Replace(sr.ReadLine(), “\\s{2,}”, ” “)); <br>} <br>} <br>HttpRuntime.Cache.Insert(“ip_data”, ipList); <br>//想客户端发送数据信息(Json格式) <br>sb.Remove(0, sb.Length); <br>sb.Append(“[{server:'").Append(dbserver) //服务器地址 <br>.Append("',count:'").Append(ipList.Count) //IP条数 <br>.Append("',insertNum:0") //本次插入条数 <br>.Append(",taskNum:0") //任务队列条数 <br>.Append("}]“); <br>context.Session["ip_info"] = sb.ToString(); <br>//触发父页面开始插入数据 <br>context.Response.Write(“<script>window.parent.insertIP();</script>”); <br>} <br>else <br>{ <br>using (SqlConnection conn = new SqlConnection(context.Session["ip_dbconnstring"] as string)) <br>{ <br>string tbname = context.Session["ip_tablename"] as string; <br>//初始化,建表并返回信息 <br>if (action == “init”) <br>{ <br>SqlCommand cmd = new SqlCommand(“if not exists(select * from sysobjects where [name]='” + tbname + <br>“‘ and xtype='u')BEGIN CREATE TABLE ” + tbname + “(id BIGINT PRIMARY KEY IDENTITY(1,1),sip NVARCHAR(15),eip NVARCHAR(15),area NVARCHAR(80),[name] NVARCHAR(80))END”, conn); <br>conn.Open(); <br>cmd.ExecuteNonQuery(); <br>context.Response.Write(context.Session["ip_info"]); <br>} <br>//插入数据 <br>else if (action == “insert”) <br>{ <br>IList<string> ipList = HttpRuntime.Cache["ip_data"] as IList<string>; <br>StringBuilder sb = new StringBuilder(400); <br>//默认每次插入300条 <br>int insertNum; <br>int.TryParse(context.Request["num"], out insertNum); <br>if (insertNum < 1) insertNum = 300; <br>SqlCommand cmd = new SqlCommand(); <br>cmd.Parameters.AddRange( <br>new SqlParameter[]{ <br>new SqlParameter(“@sip”,null), <br>new SqlParameter(“@eip”,null), <br>new SqlParameter(“@area”,null), <br>new SqlParameter(“@name”,null) <br>}); <br>cmd.Connection = conn; <br>conn.Open(); <br>string[] arr; <br>for (var i = 0; i <= insertNum && i < ipList.Count; i++) <br>{ <br>arr = ipList[i].Split(‘ ‘); <br>cmd.CommandText = “if not exists(select id from ” + tbname + <br>” where sip='”+arr[0]+”‘and eip='”+arr[1]+”‘) INSERT INTO ” + tbname + <br>” values(@sip,@eip,@area,@name)”; <br>cmd.Parameters["@sip"].Value = arr[0]; <br>cmd.Parameters["@eip"].Value = arr[1]; <br>cmd.Parameters["@area"].Value = arr[2]; <br>cmd.Parameters["@name"].Value =arr.Length>=4?arr[3]:”"; <br>sb.Remove(0, sb.Length); <br>cmd.ExecuteNonQuery(); <br>ipList.Remove(ipList[i]); <br>} <br>sb.Remove(0, sb.Length); <br>sb.Append(“[{count:").Append(ipList.Count) //未插入IP的条数 <br>.Append(",insertNum:").Append(insertNum) <br>.Append("}]“); <br>context.Response.Write(sb.ToString()); <br>} <br>} <br>} <br>} <br>} <br>} <br> <br>当处理上面的代码之后IP数据将添加到你的数据库中!总数是38万条添加时间在1个小时左右! <br>写入到数据库后的截图如下: <br><img src="https://img.gxlcms.com//Uploads-s/new/2019-09-19-201919/20110129234213283.jpg" border="0"></li><li> </li><li> </li></ol></pre></li></ol></pre></li></ol></pre>

人气教程排行