Dans ce code, l'auteur vise à optimiser l'insertion de plus de 1,3 million de lignes dans une base de données MS SQL Server . Actuellement, le processus prend environ 40 minutes pour insérer 300 000 lignes. Sur la base du code fourni, les approches suivantes sont recommandées pour améliorer la vitesse d'insertion :
La commande T-SQL BULK INSERT est spécialement conçue pour des données en masse efficaces. chargement. Cependant, cela nécessite que le fichier source soit situé sur la même machine que l'instance SQL Server ou dans un emplacement réseau accessible via SMB/CIFS.
Pyodbc 4.0.19 a introduit la fonctionnalité fast_executemany dans sa classe Cursor. Lorsqu'elle est activée, cette fonctionnalité optimise l'exécution des requêtesexecutemany, qui impliquent l'insertion de plusieurs lignes de données.
Le code suivant montre comment utiliser fast_executemany :
<code class="python">import pyodbc import time conn_str = 'connection string' cnxn = pyodbc.connect(conn_str, autocommit=True) crsr = cnxn.cursor() crsr.execute("TRUNCATE TABLE fast_executemany_test") sql = "INSERT INTO fast_executemany_test (txtcol) VALUES (?)" params = [(f'txt{i:06d}',) for i in range(1000)] t0 = time.perf_counter() crsr.executemany(sql, params) print(f'{time.perf_counter() - t0:.1f} seconds') crsr.fast_executemany = True t0 = time.perf_counter() crsr.executemany(sql, params) print(f'{time.perf_counter() - t0:.1f} seconds')</code>
Dans le code ci-dessus, l'activation fast_executemany réduit considérablement le temps d'exécution.
Au lieu de parcourir les lignes une par une, envisagez d'utiliser une liste ou un tableau NumPy pour stocker les données, puis insérez la collection entière en un seul appel d'exécution. Cette approche élimine la surcharge liée à l'exécution répétée du curseur.
En implémentant ces optimisations, il est possible d'améliorer considérablement les performances des opérations d'insertion en masse dans MS SQL Server à l'aide de pyodbc.
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!