Poniżej znajduje się mój kod, który chciałbym pomóc. Muszę uruchomić to ponad 1 300 000 wierszy, co oznacza, że trwa do 40 minut wstawienia ~ 300 000 wierszy.Jak przyspieszyć wstawianie zbiorcze do MS SQL Server z CSV przy użyciu pyodbc
I figure bulk insert jest drogą do przyspieszenia? Czy to dlatego, że Iterowanie przez wiersze za pośrednictwem części for data in reader:
?
#Opens the prepped csv file
with open (os.path.join(newpath,outfile), 'r') as f:
#hooks csv reader to file
reader = csv.reader(f)
#pulls out the columns (which match the SQL table)
columns = next(reader)
#trims any extra spaces
columns = [x.strip(' ') for x in columns]
#starts SQL statement
query = 'bulk insert into SpikeData123({0}) values ({1})'
#puts column names in SQL query 'query'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
print 'Query is: %s' % query
#starts curser from cnxn (which works)
cursor = cnxn.cursor()
#uploads everything by row
for data in reader:
cursor.execute(query, data)
cursor.commit()
Dynamicznie wybieram nagłówki kolumn celowo (jako że chciałbym stworzyć najbardziej pytonowy kod).
SpikeData123 to nazwa tabeli.
Gdy wiesz, że twój kod działa poprawnie, usuń wydruk, który powinien przyspieszyć. – zulq