問題
從Microsoft SQL Server 過渡到My 時,如何複製資料表可以在不犧牲效能的情況下實現資料表的複製嗎?
答案
雖然在插入資料之前避免寫入 CSV 檔案似乎很直觀,但效能基準表明情況並非如此。使用 MySqlBulkLoader 類別從 CSV 檔案批次載入資料明顯優於使用 MySqlDataAdapter 直接插入。
實作:
<code class="csharp">string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv"; using (StreamWriter writer = new StreamWriter(tempCsvFileSpec)) { Rfc4180Writer.WriteDataTable(rawData, writer, false); } var msbl = new MySqlBulkLoader(conn); msbl.TableName = "testtable"; msbl.FileName = tempCsvFileSpec; msbl.FieldTerminator = ","; msbl.FieldQuotationCharacter = '"'; msbl.Load(); System.IO.File.Delete(tempCsvFileSpec);</code>
此程式碼將 DataTable 轉儲到臨時 CSV 文件,批次載入數據,然後刪除該檔案。基準測試表明,這種方法只需要 5-6 秒,包括檔案 I/O 操作的時間。相比之下,使用 MySqlDataAdapter 直接插入大約需要 30 秒。
以上是MySQL如何在保證效能的情況下實現資料表的批次複製?的詳細內容。更多資訊請關注PHP中文網其他相關文章!