Trong tập lệnh python, tôi cần chạy truy vấn trên một nguồn dữ liệu và chèn từng hàng từ truy vấn đó vào bảng trên nguồn dữ liệu khác. Tôi thường làm điều này với một tuyên bố chèn/chọn đơn với một máy chủ được liên kết với tsql nhưng tôi không có kết nối máy chủ được liên kết với nguồn dữ liệu cụ thể này.Chèn số lượng lớn pyodbc cơ bản
Tôi đang gặp khó khăn khi tìm một ví dụ về pyodbc đơn giản về điều này. Đây là cách tôi sẽ làm điều đó nhưng tôi đoán thực hiện một tuyên bố chèn bên trong một vòng lặp là khá chậm.
result = ds1Cursor.execute(selectSql)
for row in result:
insertSql = "insert into TableName (Col1, Col2, Col3) values (?, ?, ?)"
ds2Cursor.execute(insertSql, row[0], row[1], row[2])
ds2Cursor.commit()
Có cách nào tốt hơn để chèn bản ghi với pyodbc không? Hay đây là một cách tương đối hiệu quả để làm điều này. Tôi đang sử dụng SqlServer 2012, và các phiên bản pyodbc và python mới nhất.
Chỉ cần một lưu ý, thực thi không thực sự làm bulkinsert đúng sự thật. Đằng sau hiện trường nó vẫn làm chèn 1 của 1. Nó thực sự là một wrapper để cho phép dữ liệu được nguồn gốc pythonically hơn. Bài viết SO này trình bày một bulkinsert thích hợp. http://stackoverflow.com/questions/29638136/how-to-speed-up-with-bulk-insert-to-ms-server-from-python-with-pyodbc-from-csv – casbby