|
------- WindowsPhone 7手机开发、.Net培训、期待与您交流! -------
快速数据导入:
数据库连接池
aod.net打开的连接并非真的是关了,会保留几个连接于连接池中,并没有Dispose()掉,而是保存中。 复用连接池中的连接。 解决批量处理数据的时间(例批量插入数据需要24min->3s) 批量数据提交。 几十万的数据批量插入数据 SqlBulkCopy大数据Copy的一个类 SqlBulkCopy bulkCopy=new SqlBulkCopy (StrConn); 实现的是IDisposable接口,所以要Using,没有显示次接口的不用Using. DestinationTanleName批量目标DBName WriteTOServer(DataTable,)(重载)把数据批量写入DB DataRow row internal代表程序集内部可以看到,外不可以 DataTable table=new DataTable(); DataRow row=table.NewRow(); 在本地创建的数据表,而非为数据库中的表 建立数据库中字段和本地表的联系 bulkCopy=new .ColumnMappings.Add("本地列名","数据库中列名");
读取文本文件
获取我们所需要的字段
建立本地数据副本 ( 本地数据和数据库中数据的映射的建立 )
用SqlBulkCopy去大批量的处理数据
c# Code OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "文本文件|*.txt"; if (ofd.ShowDialog() == false) { return; }
string[] lines = File.ReadAllLines(ofd.FileName.ToString(), Encoding.Default).ToArray(); DataTable dt = new DataTable();//本地的datatable对象 dt.Columns.Add("StartTelNumber"); dt.Columns.Add("City"); dt.Columns.Add("TelType"); for (int i = 1; i < lines.Length;i++ ) { string line = lines[i]; string[] strs = line.Split('\t'); string startTelNum = strs[0].ToString(); string city = strs[1].ToString(); city = city.Trim('"'); string telTytpe = strs[2].ToString(); telTytpe = telTytpe.Trim('"'); DataRow row = dt.NewRow(); row["StartTelNumber"] = startTelNum;//row["StartTelNumber"]内存中 row["City"] = city; row["TelType"] = telTytpe; dt.Rows.Add(row);//只是创建没有插入 } string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr)) { bulkCopy.DestinationTableName = "dbo.tb_Tel"; bulkCopy.ColumnMppings.Add("StartTelNumber", "HaoDuan"); bulkCopy.ColumnMppings.Add("City", "Address"); bulkCopy.ColumnMppings.Add("TelType", "Type"); bulkCopy.WriteToServer(dt);//把数据批量写入服务器中,本地存放数据的集合对象。 }
|