In uno script python, ho bisogno di eseguire una query su un'origine dati e inserire ogni riga da quella query in una tabella su un'origine dati diversa. Lo farei normalmente con una singola istruzione insert/select con un join server collegato a tsql ma non ho una connessione server collegata a questa particolare origine dati.basic bulk pyodbc insert
Non riesco a trovare un semplice esempio di pyodbc. Ecco come lo farei, ma suppongo che l'esecuzione di un'istruzione di inserimento all'interno di un ciclo sia piuttosto lenta.
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()
Esiste un modo migliore per inserire record con pyodbc? O è questo un modo relativamente efficiente per farlo comunque. Sto usando SqlServer 2012 e le ultime versioni di pyodbc e python.
Solo una nota, executemany in realtà non fa vero bulkinsert. Dietro la scena fa ancora l'inserto 1 per 1. È davvero un wrapper che consente ai dati di essere acquisiti in modo più pitone. Questo post SO presenta un bulkinsert adeguato. http://stackoverflow.com/questions/29638136/how-to-speed-up-with-bulk-insert-to-ms-server-from-python-with-pyodbc-from-csv – casbby