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

//本文为转载,是一个不错的IISLOG文件转换TABLE的好方法 ,里面个人觉得有些问题,请参考 
//转载网址为  http://www.oschina.net/code/snippet_5820_3246
public 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);
            }
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值