Masseneinfügungsvorgänge können die Leistung beim Einfügen großer Datensätze in Microsoft SQL Server erheblich verbessern. Dieser Artikel untersucht alternative Ansätze zur Optimierung solcher Einfügungen und geht dabei auf die spezifischen Herausforderungen ein, mit denen der in der Frage bereitgestellte Code konfrontiert ist.
Fast Executemany (Pyodbc 4.0.19): Neuere Versionen von Pyodbc (4.0.19) bieten die Funktion Cursor#fast_executemany, die die Ausführung mehrzeiliger Einfügungen beschleunigen soll. Wenn Sie crsr.fast_executemany auf „True“ setzen, können Sie möglicherweise eine deutliche Leistungssteigerung im Vergleich zur Standardmethode „executemany“ erzielen.
<code class="python"># Connect to the database and create a cursor with fast_executemany enabled cnxn = pyodbc.connect(conn_str, autocommit=True) crsr = cnxn.cursor() crsr.fast_executemany = True # Execute the bulk insert operation with parameters sql = "INSERT INTO table_name (column1, column2) VALUES (?, ?)" params = [(data1, data2) for (record_id, data1, data2) in data] crsr.executemany(sql, params)</code>
Iterieren mit Pandas DataFrame: Alternativ können Sie Pandas verwenden, um Ihre CSV-Daten in einen DataFrame einzulesen und dessen optimierte to_sql()-Methode zu nutzen. Dieser Ansatz optimiert das Einfügen von Daten und unterstützt verschiedene Optimierungen wie Chunking und Typkonvertierungen.
<code class="python">import pandas as pd # Read CSV data into a DataFrame df = pd.read_csv(csv_file) # Establish a database connection engine = sqlalchemy.create_engine(conn_str) # Insert DataFrame into the database using `to_sql()` df.to_sql('table_name', con=engine, if_exists='append', index=False)</code>
Bulk Copy Interface (BCP): Das Bulk Copy Interface ( BCP) ist ein natives SQL Server-Dienstprogramm, das eine schnelle Datenübertragung zwischen Dateien und Datenbanktabellen ermöglicht. BCP bietet mehrere Leistungsvorteile gegenüber Standard-SQL-INSERT-Anweisungen.
bcp {table_name} in {csv_file} -S {server} -d {database} -E
Der optimale Ansatz für Ihr spezifisches Szenario hängt von Faktoren wie Datengröße und Server ab Konfiguration und verfügbare Ressourcen. Im Allgemeinen bietet fast_executemany eine erhebliche Leistungsverbesserung gegenüber der Iteration über einen Cursor, während BCP in Masseneinfügungsszenarien häufig beide übertrifft.
Das obige ist der detaillierte Inhalt vonWie beschleunigt man Masseneinfügungen in MS SQL Server mit Pyodbc?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!