In diesem Code zielt der Autor darauf ab, das Einfügen von über 1,3 Millionen Zeilen in eine MS SQL Server-Datenbank zu optimieren . Derzeit dauert der Vorgang etwa 40 Minuten, um 300.000 Zeilen einzufügen. Basierend auf dem bereitgestellten Code werden die folgenden Ansätze empfohlen, um die Einfügegeschwindigkeit zu verbessern:
Der T-SQL-Befehl BULK INSERT wurde speziell für effiziente Massendaten entwickelt Laden. Allerdings muss sich die Quelldatei auf demselben Computer wie die SQL Server-Instanz oder an einem Netzwerkspeicherort befinden, auf den über SMB/CIFS zugegriffen werden kann.
Pyodbc 4.0.19 hat die Funktion fast_executemany in seiner Cursor-Klasse eingeführt. Wenn diese Funktion aktiviert ist, optimiert sie die Ausführung von Executemany-Abfragen, bei denen mehrere Datenzeilen eingefügt werden.
Der folgende Code zeigt, wie fast_executemany verwendet wird:
<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>
Im obigen Code wird aktiviert fast_executemany reduziert die Ausführungszeit erheblich.
Anstatt die Zeilen einzeln zu iterieren, sollten Sie erwägen, eine Liste oder ein NumPy-Array zum Speichern der Daten zu verwenden und dann die gesamte Sammlung einzufügen in einem einzigen Executemany-Aufruf. Dieser Ansatz eliminiert den Overhead durch wiederholte Cursorausführung.
Durch die Implementierung dieser Optimierungen ist es möglich, die Leistung von Masseneinfügungsvorgängen in MS SQL Server mithilfe von pyodbc drastisch zu verbessern.
Das obige ist der detaillierte Inhalt vonWie optimiere ich die Masseneinfügungsgeschwindigkeit in MS SQL Server mithilfe von Pyodbc?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!