文字文件資料匯入資料庫(大資料插入到資料庫)
阿新 • • 發佈:2019-02-10
用excel匯入使用者到資料庫中,一兩秒匯入幾千條資料感覺非常快,但是這是一條條的插入到資料庫的。在做select
*的時候,資料是一條條的插入的嗎?用一個datatable儲存所有查詢的資料返回給客戶端。
大量資料的匯入也是這樣的。把很多資料儲存到table中然後儲存table就可以了。
首先看一下怎麼開啟資源庫並且把選中的路徑放到文字框,並且尋找文字文件。
using (OpenFileDialog ofd=new OpenFileDialog())//資源 { ofd.Filter = "文字文件|*.txt";//篩選文章類別 if (ofd.ShowDialog()==DialogResult.OK)//選中 { txtImport.Text = ofd.FileName;//將選擇的文字地址賦值 IMportData(ofd.FileName); } }
文字文件的資料讀取,表的建立,初始化,繫結資料,插入
string temp = string.Empty; //讀取檔案的名稱 using (StreamReader reader = new StreamReader(FileName,Encoding.UTF8)) { reader.ReadLine();//去掉第一行 //讀取配置檔案 string connstr = ConfigurationManager.ConnectionStrings["sql2"].ConnectionString; //新建,初始化表,表格中的資料要和資料庫中的型別一致,欄位名也要相同 DataTable once_Sockdetailhistory = new DataTable(); once_Sockdetailhistory.Columns.Add("SockNumber", typeof(int)); once_Sockdetailhistory.Columns.Add("Scokintotime", typeof(DateTime)); once_Sockdetailhistory.Columns.Add("Sockintopeople", typeof(string)); once_Sockdetailhistory.Columns.Add("SockID", typeof(string)); once_Sockdetailhistory.Columns.Add("SockdetailhistoryID", typeof(string)); using (SqlConnection conn=new SqlConnection(connstr)) { //using (SqlCommand cmd=conn.CreateCommand()) //{ conn.Open(); while (!string.IsNullOrEmpty(temp = reader.ReadLine())) { var strs = temp.Split(','); //string sql = string.Format("insert into Sockdetailhistory(SockNumber,Sockintopeople,SockID) values('{0}','{1}','{2}')", strs[0],strs[1], strs[4]); //cmd.CommandText = sql; //cmd.ExecuteNonQuery(); //表格填充,建立新的一行,逐行賦值 DataRow newrow = once_Sockdetailhistory.NewRow(); newrow["SockNumber"] = strs[0]; newrow["Sockintopeople"] = strs[1]; newrow["SockID"] = strs[4]; //把這一行新增到表中 once_Sockdetailhistory.Rows.Add(newrow); } addDatatabletosql(once_Sockdetailhistory,conn); //} } }
private void addDatatabletosql(DataTable once_Sockdetailhistory,SqlConnection thisconn) { using (SqlBulkCopy bulkcopy=new SqlBulkCopy(thisconn))//相當於sqlcommand { bulkcopy.DestinationTableName = "Sockdetailhistory"; //資料表 bulkcopy.WriteToServer(once_Sockdetailhistory); } }