asp.net下将纯真IP数据导入数据库中的代码_实用技巧

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


程序通过AJAX在客户端进行数据插入实时更新:
实现代码如下:
前端页面及javascript:

复制代码 代码如下:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head>
<title>导入IP地址数据库-power by blog.atnet.cc</title>
<style type=”text/css”>
body{font-size:14px;}
#log{border:solid 1px gold;width:400px;height:100px;padding:10px;background:gold;margin-bottom:15px;color:black;}
#recordLog{font-size:12px;}
</style>
<script type=”text/javascript” src=”/scripts/global.js”></script>
<script type=”text/javascript”>
var log,reLog; //Log,RecordLog
var recordCount; //IP记录总数
window.onload=function(){
log=document.getElementById(“log”);
}
function startImport(){
if(!document.getElementById(“submit_ifr”)){
var elem=document.createElement(“iframe”);
elem.setAttribute(“id”,”submit_ifr”);
elem.setAttribute(“name”,”ifr”);
elem.style.cssText=”display:none”;
document.body.appendChild(elem);
document.forms[0].target=elem.name;
}
document.forms[0].submit();
log.innerHTML=”正在上传数据!<br />”;
return false;
}

function insertIP(){
log.innerHTML+=”开始分析数据…<br />”;
j.ajax.post(“/do.ashx?args=ImportIPData&action=init”,”",
function(x){
var d=eval(x)[0];
recordCount=d.count;
log.innerHTML+=”<font color=green>分析数据成功:<br />服务器地址:”+
d.server+”,记录:”+recordCount+”条!<br /><div id='recordLog'></div>”;
//开始插入
insert();
},
function(x){log.innerHTML+=”<font color=red>发生异常,已终止!</font>”;}
);
}
function insert(){
if(!reLog)reLog=document.getElementById(“recordLog”);
var num=Math.floor(Math.random()*100);
j.ajax.post(“/do.ashx?args=ImportIPData&action=insert”,”num=”+num,
function(x){var d=eval(x)[0];reLog.innerHTML=”已经写入数据:”+(recordCount-d.count)+
“条,队列:”+d.count+”条,本次写入:”+d.insertNum+”条”;
if(d.count!=0){insert();}
else{reLog.innerHTML=”恭喜,写入完毕!”;}
},function(x){alert(x);});
}
</script>
</head>
<body>
<div style=”margin:60px 100px”>
<div id=”log”>请填写相关数据,选择IP数据文件!</div>
<form action=”/do.ashx?args=ImportIPData” method=”post” enctype=”multipart/form-data” target=”ifr”>
数据库IP:<input type=”text” name=”dbserver” value=”.” /><br />
数据库名:<input type=”text” name=”dbname” value=”tp” /><br />
数据表名:<input type=”text” name=”tbname” value=”ip” /><br />
用  户  名:<input type=”text” name=”dbuid” value=”sa” /><br />
密      码<input type=”password” name=”dbpwd” value=”123000″ /><br />
IP文件:<input type=”file” name=”ipfile” value=”C:\Users\cwliu\Desktop\1.txt” /><br />
<button onclick=”return startImport();”>导入</button>
</form>
</div>
</body>
</html>

注:j为一个自定义的javascript类库,中间包含了ajax功能的代码
后台程序我们用来接收ajax发送的Post 请求:
代码如下:

复制代码 代码如下:

File:do.ashx?args=ImportIPData
public void ProcessRequest(HttpContext context)
{
if (context.Request.RequestType == “POST”)
{
string action = context.Request["action"];
//提交IP数据
if (string.IsNullOrEmpty(action) || action == “submit”)
{
string dbserver = context.Request["dbserver"], tbname = context.Request["tbname"];
StringBuilder sb = new StringBuilder(500);
sb.Append(“server=”).Append(dbserver).Append(“;database=”).Append(context.Request["dbname"])
.Append(“;uid=”).Append(context.Request["dbuid"]).Append(“;pwd=”).Append(context.Request["dbpwd"]);
//保存数据库连接字符串及数据表名
HttpContext.Current.Session["ip_dbconnstring"] = sb.ToString();
HttpContext.Current.Session["ip_tablename"] = tbname;
//读取IP数据并缓存
IList<string> ipList = new List<string>();
HttpPostedFile file = context.Request.Files[0];
using (StreamReader sr = new StreamReader(file.InputStream, Encoding.UTF8))
{
while (sr.Peek() != -1)
{
ipList.Add(Regex.Replace(sr.ReadLine(), “\\s{2,}”, ” “));
}
}
HttpRuntime.Cache.Insert(“ip_data”, ipList);
//想客户端发送数据信息(Json格式)
sb.Remove(0, sb.Length);
sb.Append(“[{server:'").Append(dbserver) //服务器地址
.Append("',count:'").Append(ipList.Count) //IP条数
.Append("',insertNum:0") //本次插入条数
.Append(",taskNum:0") //任务队列条数
.Append("}]“);
context.Session["ip_info"] = sb.ToString();
//触发父页面开始插入数据
context.Response.Write(“<script>window.parent.insertIP();</script>”);
}
else
{
using (SqlConnection conn = new SqlConnection(context.Session["ip_dbconnstring"] as string))
{
string tbname = context.Session["ip_tablename"] as string;
//初始化,建表并返回信息
if (action == “init”)
{
SqlCommand cmd = new SqlCommand(“if not exists(select * from sysobjects where [name]='” + tbname +
“‘ 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);
conn.Open();
cmd.ExecuteNonQuery();
context.Response.Write(context.Session["ip_info"]);
}
//插入数据
else if (action == “insert”)
{
IList<string> ipList = HttpRuntime.Cache["ip_data"] as IList<string>;
StringBuilder sb = new StringBuilder(400);
//默认每次插入300条
int insertNum;
int.TryParse(context.Request["num"], out insertNum);
if (insertNum < 1) insertNum = 300;
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddRange(
new SqlParameter[]{
new SqlParameter(“@sip”,null),
new SqlParameter(“@eip”,null),
new SqlParameter(“@area”,null),
new SqlParameter(“@name”,null)
});
cmd.Connection = conn;
conn.Open();
string[] arr;
for (var i = 0; i <= insertNum && i < ipList.Count; i++)
{
arr = ipList[i].Split(‘ ‘);
cmd.CommandText = “if not exists(select id from ” + tbname +
” where sip='”+arr[0]+”‘and eip='”+arr[1]+”‘) INSERT INTO ” + tbname +
” values(@sip,@eip,@area,@name)”;
cmd.Parameters["@sip"].Value = arr[0];
cmd.Parameters["@eip"].Value = arr[1];
cmd.Parameters["@area"].Value = arr[2];
cmd.Parameters["@name"].Value =arr.Length>=4?arr[3]:”";
sb.Remove(0, sb.Length);
cmd.ExecuteNonQuery();
ipList.Remove(ipList[i]);
}
sb.Remove(0, sb.Length);
sb.Append(“[{count:").Append(ipList.Count) //未插入IP的条数
.Append(",insertNum:").Append(insertNum)
.Append("}]“);
context.Response.Write(sb.ToString());
}
}
}
}
}
}

当处理上面的代码之后IP数据将添加到你的数据库中!总数是38万条添加时间在1个小时左右!
写入到数据库后的截图如下:

时间: 2024-10-30 12:26:05

asp.net下将纯真IP数据导入数据库中的代码_实用技巧的相关文章

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

纯真IP数据包含381085条,可以通过下载的查询软件将数据解压为文本格式,并将其编码改为UTF8,否则在程序中读取中文会乱码! 下面为程序执行分析IP数据并插入到Sql Server的截图: 程序通过AJAX在客户端进行数据插入实时更新: 实现代码如下: 前端页面及javascript: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

asp.net下将Excel转成XML档的实现代码_实用技巧

复制代码 代码如下: if (this.FileUpload1.PostedFile != null) { string filename = this.FileUpload1.FileName.ToString(); string path = @Server.MapPath("../File/") + filename; this.FileUpload1.PostedFile.SaveAs(path); //读取用户上传的Excle文件 string conn="Prov

xls表格导入数据库功能实例代码_实用技巧

复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e)        {             if (FileUpload1.HasFile == false)            {                Page.ClientScript.RegisterStartupScript(this.GetType(), "shifou", "<script>alert('请

将Excel中数据导入到Access数据库中的方法_实用技巧

Default.aspx 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/

Asp.net利用JQuery AJAX实现无刷新评论思路与代码_实用技巧

首先在数据库中就建三个字段的表用来存储用户名和评论信息,Id只是为了设置唯一标示,所以设置成整型自增字段就行了. 再建一个HTML页面,只需简单的拉几个html控件出来摆着就行,注意在页面顶部有个<table>标签用来占位输出评论内容. Html页面代码就这样简单就行了: 复制代码 代码如下: <body><table id="room"> </table> <div> 用户名:<input id="Text1

asp.net Linq把数据导出到Excel的代码_实用技巧

前些时间有朋友为了完成此功能,就硬把数据导入DataGrid再导出到Excel.这实在是多此一举. 解决办法: 通过Linq将数据读出,并直接写入数据流中 代码如下: 复制代码 代码如下: public partial class DataToExcel : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { DataAccess.DataClassesDataContext db = new D

ASP.NET将Session保存到数据库中的方法_实用技巧

几个方式(本文不作介绍),要将Session保存到SQL Server中,需要有以下几个步骤: 1.首先要创建用于保存Session数据的数据库,以命令行的形式用aspnet_regsql.exe来完成,具体命令为 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe -ssadd -sstype c -d sd -E 该命令是以windows验证方式,添加了sd数据库保存session数据. 2.需要修改ASP.NET

DataGridView中绑定DataTable数据及相关操作实现代码_实用技巧

复制代码 代码如下: DataTable DT = new DataTable(); DT.Columns.Add("Name"); DT.Columns.Add("Sex"); DataRow dr = DT.NewRow(); dr[0] = "Kenny"; dr[1] = "男"; DT.Rows.Add(dr); A:在DataGridView控件的列编辑中将DataPropertyName属性设为DataTable

asp.net 读取文本文件并插入数据库的实现代码_实用技巧

由此,需要操作以下几个步骤 1,上传txt文件至公司系统 2,读取需要的内容 3,将内容插入到数据库中(需要判断重复) 4,与现有订单数据进行对比 本程序只研究读取需要的内容和插入数据库 复制代码 代码如下: using System; using System.Data; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using