Bir python komut dosyasında, bir veri kaynağı üzerinde bir sorgu çalıştırmalı ve bu sorgudaki her satırı farklı bir veri kaynağındaki bir tabloya eklemeliyim. Normalde bunu bir tsql bağlantılı sunucu birleşimi olan tek bir ekleme/select deyimi ile yapardım ancak bu belirli veri kaynağına bağlantılı bir sunucu bağlantım yok.basic pyodbc bulk insert
Bunun basit bir podbc örneği bulmakta zorlanıyorum. İşte böyle yaparım ama sanırım bir döngü içinde bir ekleme ifadesi yürütmek oldukça yavaştır.
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()
Kayıtları podbc ile eklemek daha iyi bir toplu yol var mı? Ya da bu zaten yapmak için nispeten verimli bir yoldur. SqlServer 2012'yi ve en yeni pyodbc ve python sürümlerini kullanıyorum.
Sadece bir not, executemany aslında gerçek bulkinsert yapmaz. Sahnenin arkasında hala 1 ile 1 ekler. Bu gerçekten veri daha pythonically kaynaklı izin vermek için bir sarıcı. Bu SO yazısı uygun bir bulkinsert sunar. http://stackoverflow.com/questions/29638136/how-to-speed-up-with-bulk-insert-to-ms-server-from-python-with-pyodbc-from-csv – casbby