今日在做项目中用到中转文件缓存的思路来想服务器传送数据,第一次使用SqlBulkCopy,但是遇到了问题:在将TXT文件中的数据复制到sql中时,第一列的时间总是提示格式不对,vs提示无法将第一列的字符串转换为DateTime格式,请各位高手支招,谢谢!!!连续加班十多天了,任务紧急,希望各位能给提出宝贵意见。
在每个TXT文件中的,每一行数据是这样存放的:
2014-07-22 00:14:31:296,六甲牵引变电所_1#主变低压侧B相电压,0.0831843,192
以下是我的程序,很菜,见笑:
//读取中转文件,此处的Path好像没用,随意写一个string就行,SQLConnectionString为指定的数据库连接字符串
public static void ReadFile(string Path, string SQLConnectionString)
{
using (SqlConnection conn = new SqlConnection(SQLConnectionString))
{
conn.Open();
DirectoryInfo di = new DirectoryInfo(@"d:\中转文件");
foreach (var fi in di.GetFiles("*.txt", SearchOption.AllDirectories))
{
string sLine = "";
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("时间标签"));
dt.Columns.Add(new DataColumn("遥测点名"));
dt.Columns.Add(new DataColumn("遥测值"));
dt.Columns.Add(new DataColumn("数据质量"));
//建立sql连接
using (StreamReader sr = new StreamReader(fi.FullName))
{
while ((sLine = sr.ReadLine()) != null)
{
DataRow row = dt.NewRow();
row.ItemArray= sLine.Split(',');
dt.Rows.Add(row);
}
System.Data.SqlClient.SqlBulkCopy sbc = new System.Data.SqlClient.SqlBulkCopy(SQLConnectionString);
{
sbc.BulkCopyTimeout = 5000;
// sbc.BatchSize = dt.Rows.Count;
try
{
//复制TXT中的数据
sbc.DestinationTableName = "中转测试";
sbc.WriteToServer(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
conn.Close();
}
//将每个TXT文件删除
string[] strFileName = Directory.GetFiles("D:\\中转文件", "*.txt");
foreach (var item in strFileName)
{
File.Delete(item);
Console.WriteLine("{0}文件被删除了",item);
}
}