このコードでは、作成者は MS SQL Server データベースへの 130 万行以上の挿入を最適化することを目的としています。 。現在、300,000 行を挿入するプロセスには約 40 分かかります。提供されているコードに基づいて、挿入速度を向上させるには次のアプローチが推奨されます。
T-SQL BULK INSERT コマンドは、効率的なバルク データ用に特別に設計されています。ロード中。ただし、ソース ファイルは SQL Server インスタンスと同じマシン上、または SMB/CIFS 経由でアクセスできるネットワーク上の場所に配置する必要があります。
Pyodbc 4.0.19は、Cursor クラスに fast_executemany 機能を導入しました。この機能を有効にすると、複数行のデータの挿入を伴うexecutemanyクエリの実行が最適化されます。
次のコードは、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>
上記のコードでは、 fast_executemany は実行時間を大幅に短縮します。
行を 1 つずつ反復する代わりに、リストまたは NumPy 配列を使用してデータを保存し、コレクション全体を挿入することを検討してください。 1 回の実行で多くの呼び出しを実行できます。このアプローチにより、繰り返しカーソルを実行するオーバーヘッドが排除されます。
これらの最適化を実装することにより、pyodbc を使用した MS SQL Server での一括挿入操作のパフォーマンスを大幅に向上させることができます。
以上がPyodbc を使用して MS SQL Server への一括挿入速度を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。