//本文为转载,是一个不错的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);
}
}
C# IIS log日志转换成Table 传入数据库
最新推荐文章于 2023-10-08 16:31:38 发布