使用sqlBulkCopy快速添加大量数据到数据库中

 

使用sqlBulkCopy快速添加大量数据到数据库中

 
 1 private void btnImportFromWeb_Click(object sender, RoutedEventArgs e)
 2 {
 3 string connStr = "Data Source = 127.0.0.1; Initial Catalog = MyTest; User ID = sa;Password = 654321";
 4 DateTime startTime = DateTime.Now;
 5 OpenFileDialog dialog = new OpenFileDialog();
 6 dialog.Filter = "文本文件(*.txt)|*.txt";
 7 if (dialog.ShowDialog() == true)
 8 {
 9 //根据数据库中标列名,新建DataTable
10 DataTable dt = new DataTable();
11 dt.Columns.Add("NumSection");
12 dt.Columns.Add("AddressStr");
13 dt.Columns.Add("NumType");
14 dt.Columns.Add("AreaCode");
15 //IEnumerable<string> lines = File.ReadLines(dialog.FileName, Encoding.Default);
16 string[] lines = File.ReadLines(dialog.FileName, Encoding.Default).ToArray();
17 //foreach (string str in lines)
18 for (int i = 1; i < lines.Count(); i++)
19 {
20 //将文本数据逐行保存到dt里
21 string[] strs = lines[i].Split('\t');
22 DataRow row = dt.NewRow();
23 row["NumSection"] = strs[0];
24 row["AddressStr"] = strs[1].ToString().Trim('"');
25 row["NumType"] = strs[2].ToString().Trim('"');
26 row["AreaCode"] = strs[3].ToString().Trim('"');
27 dt.Rows.Add(row);
28 }
29 //使用sqlBulkCopy将dt存入数据库
30 using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr))
31 {
32 bulkCopy.DestinationTableName = "T_Nums";
33 //ColumnMappings.Add(数据源列名,数据表中目标列名)
34 bulkCopy.ColumnMappings.Add("NumSection", "NumSection");
35 bulkCopy.ColumnMappings.Add("AddressStr", "AddressStr");
36 bulkCopy.ColumnMappings.Add("NumType", "NumType");
37 bulkCopy.ColumnMappings.Add("AreaCode", "AreaCode");
38 bulkCopy.WriteToServer(dt);
39 }
40 TimeSpan ts = DateTime.Now.Subtract(startTime);
41 MessageBox.Show("一共插入" + dt.Rows.Count + "条数据,用时:" + ts.ToString());
42 }
43 }

 

posted on 2016-12-20 17:04  jmlsaul  阅读(105)  评论(0)    收藏  举报