C# IIS log日志转换成Table 传入数据库

来源:互联网 发布:校园网网络规划与设计 编辑:程序博客网 时间:2024/05/16 11:48
//本文为转载,是一个不错的IISLOG文件转换TABLE的好方法 ,里面个人觉得有些问题,请参考 //转载网址为  http://www.oschina.net/code/snippet_5820_3246public bool WriteToDB(string file)        {            StreamReader myRead = new StreamReader(file);            DataTable myTable = new DataTable();             while (!myRead.EndOfStream)            {                string line = myRead.ReadLine();                if (line.StartsWith("#Fields"))                {                    if (myTable.Rows.Count > 0)                    {                        dataTableToServer(myTable);                    }                    myTable = new DataTable();                    string[] Fields = line.Split(' ');                    for (int i = 1; i < Fields.Length - 1; i++)   //这里测试下来是没有必要减1的,减1的话会有报错 大家参考 一下                    {                        myTable.Columns.Add(Fields[i]);                    }                }                else if (line.StartsWith("#"))                {                    continue;                }                else                {                    string[] contents = line.Split(' ');                    DataRow myRow = myTable.NewRow();                    myRow.ItemArray = contents;                    myTable.Rows.Add(myRow);                }            }            myRead.Close();//到此,便把日志文件变成DataTable的形式了,下面的是把它写进数据库。//代码略有删节。            if (myTable.Rows.Count > 0)            {                dataTableToServer(myTable);            }            return true;        }         private void dataTableToServer(DataTable myTable)        {            string connstr = SqlHelper.getConnStr();            //string connstr = @"Data Source=.\SQLEXPRESS;Initial Catalog=iislog;User Id=sa;Password=sa;pooling=true;Timeout=60            foreach (DataColumn col in myTable.Columns)            {                resultTable.Columns.Add(col.ColumnName );            }            using (SqlBulkCopy myBulk = new SqlBulkCopy(connstr))            {                myBulk.DestinationTableName = "LogFile";                foreach (DataColumn myColumn in myTable.Columns)                {                    myBulk.ColumnMappings.Add(myColumn.ColumnName, myColumn.ColumnName);                }                myBulk.WriteToServer(resultTable);            }        }


0 0
原创粉丝点击