<!-- lang: c# --> using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Configuration; using Microsoft.Win32; using System.IO; using System.Data.SqlClient; using System.Data;数据库
namespace 手机号码导入查询 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); }c#
private void Import_btn_Click(object sender, RoutedEventArgs e) { string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; //MessageBox.Show(connStr); OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "文件文件|*.txt"; if (ofd.ShowDialog() != true) { return; } //大数据插入 DateTime startTime = DateTime.Now; string[] lines = File.ReadLines(ofd.FileName, Encoding.Default).ToArray(); DataTable table = new DataTable(); table.Columns.Add("StartTelNum"); //建立本地表的列 table.Columns.Add("Num_Area"); table.Columns.Add("Num_Type"); table.Columns.Add("Num_Code"); for (int i = 1; i < lines.Count(); i++) { string line = lines[i]; string[] strs = line.Split('\t'); ; string startTelNum = strs[0]; //开始号码 string city = strs[1]; //城市 city = city.Trim('"'); //去掉两边的双引号:"北京市" string telType = strs[2]; //号码类型 telType = telType.Trim('"'); string code_num = strs[3]; //区号 code_num = code_num.Trim('"'); DataRow row = table.NewRow(); //建立一个DataRow对象 row["StartTelNum"] = startTelNum; //给列赋值 必定要在一开始建立table.Clumns添加列 row["Num_Area"] = city; row["Num_Type"] = telType; row["Num_Code"] = code_num; table.Rows.Add(row); //插入DataRow对象 } using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connStr)) //爆发bulkCopy { bulkCopy.DestinationTableName = "T_TelNum"; //把这个对象copy到T_TelNum这个表 bulkCopy.ColumnMappings.Add("StartTelNum","StartTelNum"); //DataTable row字段和数据库中的对应关系 bulkCopy.ColumnMappings.Add("Num_Area","Num_Area"); bulkCopy.ColumnMappings.Add("Num_Type","Num_Type"); bulkCopy.ColumnMappings.Add("Num_Code","Num_Code"); //添加DataTable中列名和数据库表汇总列名的映射 bulkCopy.WriteToServer(table); //写入到数表中 } TimeSpan ts = DateTime.Now - startTime; MessageBox.Show("总共用了:"+ts.ToString()); //传统插入方法 //DateTime startTime = DateTime.Now; ////跳过第一行表头 //for (int i = 1; i < lines.Count(); i++) //{ // string line = lines[i]; // string[] strs = line.Split('\t'); ; // string startTelNum = strs[0]; //开始号码 // string city = strs[1]; //城市 // city = city.Trim('"'); //去掉两边的双引号:"北京市" // string telType = strs[2]; //号码类型 // telType = telType.Trim('"'); // string code_num = strs[3]; //区号 // code_num = code_num.Trim('"'); // //SqlHelper.ExecuteNonQuery("insert into T_TelNum (StartTelNum,Num_Area,Num_Type,Num_Code) values('1300000','北京市','联通',010)"); // //插入到数据库 // //数据库链接池:ADO.net会尽量的复用链接池中的链接 // SqlHelper.ExecuteNonQuery(@"insert into T_TelNum (StartTelNum,Num_Area,Num_Type,Num_Code) values(@StartTelNum,@Num_Area,@Num_Type,@Num_Code)", // new SqlParameter("@StartTelNum",startTelNum), // new SqlParameter("@Num_Area",city), // new SqlParameter("@Num_Type",telType), // new SqlParameter("@Num_Code",code_num)); // TimeSpan ts = DateTime.Now - startTime; //DateTime 相减获得TimeSpan类型 // double ellapsedSec = ts.TotalSeconds; //已经耗用的秒数 // // double totalSec = (ellapsedSec / (i + 1)) * lines.Length; //先乘后除精确 // double totalSec = ellapsedSec * lines.Length /(i+1) /60; //估计须要的时间 // MessageBox.Show("大概须要"+totalSec.ToString()); //} MessageBox.Show("导入完成!"); } }
}app