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);
}
}读取 IIS日志 到 数据库
最新推荐文章于 2023-09-30 21:54:44 发布
本文介绍了一种将日志文件转换为数据库记录的方法。该方法首先使用StreamReader读取文件内容,并将其解析为DataTable对象,然后利用SqlBulkCopy批量插入数据库中。


948

被折叠的 条评论
为什么被折叠?



