Operasi sisipan pukal boleh meningkatkan prestasi memasukkan set data besar ke dalam Microsoft SQL Server dengan ketara. Artikel ini meneroka pendekatan alternatif untuk mengoptimumkan sisipan sedemikian, menangani cabaran khusus yang dihadapi oleh kod yang disediakan dalam soalan.
Melaksanakan Cepat (Pyodbc 4.0.19): Versi terkini Pyodbc (4.0.19 ) menawarkan ciri Cursor#fast_executemany, direka untuk mempercepatkan pelaksanaan sisipan berbilang baris. Dengan menetapkan crsr.fast_executemany kepada True, anda berpotensi memperoleh peningkatan prestasi yang ketara berbanding kaedah executemany lalai.
<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>
Lelaran Menggunakan Pandas DataFrame: Sebagai alternatif , anda boleh menggunakan Pandas untuk membaca data CSV anda ke dalam DataFrame dan memanfaatkan kaedah to_sql() yang dioptimumkan. Pendekatan ini menyelaraskan pemasukan data dan menyokong pelbagai pengoptimuman, seperti penukaran chunking dan jenis.
<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>
Antara Muka Salin Pukal (BCP): Antara Muka Salin Pukal ( BCP) ialah utiliti SQL Server asli yang membolehkan pemindahan data berkelajuan tinggi antara fail dan jadual pangkalan data. BCP menawarkan beberapa kelebihan prestasi berbanding pernyataan SQL INSERT standard.
bcp {table_name} in {csv_file} -S {server} -d {database} -E
Pendekatan optimum untuk senario khusus anda bergantung pada faktor seperti saiz data, pelayan konfigurasi, dan sumber yang tersedia. Secara amnya, fast_executemany memberikan peningkatan prestasi yang ketara berbanding lelaran melalui kursor, manakala BCP sering mengatasi kedua-dua senario sisipan pukal.
Atas ialah kandungan terperinci Bagaimana untuk Mempercepatkan Sisipan Pukal ke dalam Pelayan MS SQL Menggunakan Pyodbc?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!