jeffluo 发表于 2016-9-15 14:02:03

數據的導入

從技術角度大量資料要載入到SQL Server 有幾種方式你可以使用【從72分鐘 縮短到 5 秒】,從【Entity Framework INSERT ONE BY ONE】改用【NET SqlBulkCopy Class】,下面有範例程式0. INSERT INTO ONE BY ONE(一顆星速度)
1. SQL Server Integration Service (三顆星速度)
2. BCP.exe (四顆星速度)
3. NET SqlBulkCopy Class(四顆星速度)
4. T-SQL Bulk Insert (五顆星速度)基本上這樣的技術該怎樣整合成一個完整產品,以下就是團隊藉由SQL SERVER整合NET搭配SAAS軟體,開發的一個Enterprise APP(該種APP有別於MOBILE APP),可以說是最新的程式開發。所有學習SQL Server 已經不僅是T-SQL/DBA/DBD,希望可以藉此讓親愛的社員知道,技術已經不僅是技術。【code for SqlBulkCopy 部分程式】
//連線字串
string BStr = " Server=.;Database=TestTemp;Trusted_Connection=True";SqlConnection Bulkcn = new SqlConnection(BStr);
//SqlBulkCopy裡面就只能放SqlConnection,不能放別的像是OleDbConnection
//【核心程式】
SqlBulkCopy SBC = new SqlBulkCopy(Bulkcn);
//複製到目的地的哪個資料表
string sql = "";
SqlConnection Conn = new SqlConnection(BStr);
SqlCommand Cmd = new SqlCommand(sql, Conn);//產生一個在前端的空白DATA TABLE
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM myOrder WHERE 1=2", Conn);
DataTable datatable = new DataTable();
adapter.Fill(datatable);
//目的資料庫資料表
SBC.DestinationTableName = "dbo.myOrder";
Stopwatch sw = new Stopwatch();
Bulkcn.Open();
sw.Start();string[] w = File.ReadAllLines(@"D:1.txt");for (Int64 i = 0; i < w.Length; ++i)
{
//每四萬筆commit一次
if (i % 40000 == 0 && i != 0)
{SBC.WriteToServer(datatable);
datatable.Clear();
}datatable.Rows.Add(w.Split(','), w.Split(','));
}
if (datatable.Rows.Count > 0)
{
SBC.WriteToServer(datatable);
datatable.Clear();
}
sw.Stop();
Bulkcn.Close();https://dlm.trend.org/

页: [1]
查看完整版本: 數據的導入