In einem Python-Skript muss ich eine Abfrage auf einer Datenquelle ausführen und jede Zeile aus dieser Abfrage in eine Tabelle auf einer anderen Datenquelle einfügen. Normalerweise würde ich dies mit einer einzelnen insert/select-Anweisung mit einem tsql-Verbindungsserver-Join tun, aber ich habe keine Verbindungsserververbindung zu dieser bestimmten Datenquelle.Basic pyodbc Masseneinfügung
Ich habe Probleme, ein einfaches Pyodbc Beispiel dafür zu finden. Hier ist, wie ich es tun würde, aber ich denke, das Ausführen einer Insert-Anweisung in einer Schleife ist ziemlich langsam.
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()
Gibt es einen besseren Massenweg, um Datensätze mit pyodbc einzufügen? Oder ist dies eine relativ effiziente Möglichkeit, dies zu tun? Ich verwende SqlServer 2012 und die neuesten pyodbc- und python-Versionen.
Nur eine Anmerkung, Executemany tut nicht wirklich Bulkinsert. Hinter der Szene tut es immer noch das Insert 1 mal 1. Es ist wirklich ein Wrapper, um Daten pythonhaltiger zu erhalten. Dieser SO Post stellt eine richtige bulkwersert dar. http://stackoverflow.com/questions/29638136/how-to-speed-up-with-bulk-insert-to-ms-server-from-python-with-pyodbc-from-csv – casbby