Maison >base de données >tutoriel mysql >Comment copier efficacement des DataTables vers MySQL ?

Comment copier efficacement des DataTables vers MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 06:34:30657parcourir

How to Efficiently Bulk Copy DataTables to MySQL?

Copie en masse de DataTables vers MySQL avec des performances optimales

La migration de projets de Microsoft SQL Server vers MySQL peut rencontrer des défis en matière de copie de données en masse. En effet, l'API SqlBulkCopy commune trouvée dans le système Microsoft n'est pas directement disponible pour MySQL.

Alternatives de copie en masse

Une alternative serait d'utiliser la classe MySqlBulkLoader, mais cela implique d'exporter des données vers un fichier CSV puis de les importer, ce qui peut entraîner des goulots d'étranglement en termes de performances.

Méthode optimisée avec MySqlDataAdapter

Cependant, une approche plus efficace peut être exploité en utilisant la méthode Update() de MySqlDataAdapter dans une transaction. Cette méthode permet des insertions par lots avec des tailles de lots de mise à jour configurables, réduisant considérablement le temps d'exécution.

Exemple de code

Voici un exemple optimisé utilisant l'approche MySqlDataAdapter :

<code class="csharp">using (MySqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
    using (MySqlCommand cmd = new MySqlCommand())
    {
        cmd.Connection = conn;
        cmd.Transaction = tran;
        cmd.CommandText = "SELECT * FROM testtable";
        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
        {
            da.UpdateBatchSize = 1000;
            using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da))
            {
                da.Update(rawData);
                tran.Commit();
            }
        }
    }
}</code>

Comparaison avec MySqlBulkLoader

Par rapport à l'utilisation de MySqlBulkLoader, l'approche MySqlDataAdapter surpasse en termes de vitesse d'exécution. Les tests avec des insertions groupées de 100 000 lignes ont montré un temps d'exécution de 30 secondes à l'aide de MySqlDataAdapter, tandis que MySqlBulkLoader a terminé le processus en 5 à 6 secondes.

Conclusion

Pour Pour une copie en masse efficace de DataTables vers MySQL, envisagez d'utiliser la méthode Update() de MySqlDataAdapter dans une transaction. Cette approche offre des performances optimales sans avoir besoin d'exportations et d'importations CSV intermédiaires, ce qui se traduit par des migrations de données plus rapides et plus efficaces.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn