Copie en masse d'un DataTable dans MySQL à l'aide d'un fichier CSV temporaire
Lors de la migration vers MySQL à partir de Microsoft SQL Server, vous pouvez rencontrer des problèmes avec la migration en masse vers MySQL copie à l'aide d'une écriture directe DataTable. Bien que la classe SqlBulkCopy ne soit pas disponible nativement dans MySQL, il vaut la peine d'envisager d'utiliser un fichier CSV temporaire comme intermédiaire pour des performances optimales.
Une hypothèse à éviter est que le chargement groupé via un fichier CSV entraînera intrinsèquement de mauvaises performances. performance. Des tests empiriques ont montré que l'utilisation de la classe MySqlBulkLoader peut réduire considérablement les temps d'insertion par rapport aux mises à jour directes via un MySqlDataAdapter.
Pour y parvenir, suivez ces étapes :
Initialisez un nouvel objet MySqlBulkLoader et définissez ses propriétés :
Exemple de code :
<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>
En tirant parti de la classe MySQLBulkLoader et d'un fichier CSV temporaire, vous pouvez réaliser une copie en masse efficace de DataTables dans MySQL avec des performances améliorées par rapport aux mises à jour directes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!