读取 IIS日志 到 数据库
来源:互联网 发布:mysql数据库修复表 编辑:程序博客网 时间:2024/05/22 03:18
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++) { 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); } }