W skrypcie python, muszę uruchomić kwerendę na jednym źródle danych i wstawić każdy wiersz z tego zapytania do tabeli w innym źródle danych. Zwykle robię to za pomocą pojedynczej instrukcji insert/select z połączeniem serwera połączonym przez tsql, ale nie mam połączonego połączenia z serwerem dla tego konkretnego źródła danych.Podstawowa wkładka hurtowa pyodbc
Mam problem ze znalezieniem prostego przykładu tego pyodbc. Oto, jak to zrobić, ale domyślam się, że wykonanie instrukcji insert w pętli jest dość powolne.
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()
Czy istnieje lepszy sposób masowego wstawiania rekordów z pyodbc? Czy jest to względnie skuteczny sposób, aby to zrobić w każdym razie. Używam SqlServer 2012 i najnowszych wersji pyodbc i python.
Po prostu uwaga, executemany w rzeczywistości nie robi prawdziwej bulki. Za sceną nadal wkładka 1 przez 1. Jest to naprawdę wrapper, aby dane były zbierane bardziej pythonically. Ten post SO przedstawia prawidłową bulkinsert. http://stackoverflow.com/questions/29638136/how-to-speed-up-with-bulk-insert-to-ms-server-from-python-with-pyodbc-from-csv – casbby