1. 程式人生 > >文字文件資料匯入資料庫(大資料插入到資料庫)

文字文件資料匯入資料庫(大資料插入到資料庫)

           用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);
            }
        }