Ускорение метода панд to_sql
Я пытаюсь использовать метод to_sql от Pandas для загрузки нескольких CSV-файлов в соответствующие таблицы в базе данных SQL Server, просматривая их по очереди.
fileLoc = r'C:\Users\hcole\Downloads\stats.csv\\'
dfArray = ['file1', 'file2', 'file3', 'file4']
for name in dfArray:
df = pd.read_csv(fileLoc + name + '.csv')
df.columns = df.columns.str.replace(' ', '')
df.to_sql(name, engine, if_exists = 'append', index = False)
Моя строка подключения и соединение с базой данных работает нормально; Я делаю это через первые несколько (и маленькие) файлы просто отлично. Но как только я нажимаю на file4, который содержит ~135 тыс. Строк, загрузка всех данных в базу данных занимает около часа. Я попытался понизиться до версии Pandas 0.22 после прочтения документации по аргументу "chunksize" в to_sql, но мне не повезло, что это ускорило процесс.
Любые советы о том, как улучшить скорость, будут оценены. Спасибо.
1 ответ
Ускорение pandas.DataFrame.to_sql с помощью fast_executemany pyODBC
Начиная с версии SQLAlchemy 1.3.0, выпущенной 04.03.2019, sqlalchemy теперь поддерживает engine = create_engine(sqlalchemy_url, fast_executemany=True)
Попробуйте собрать все данные в один DataFrame, прежде чем пытаться записать в SQL.
Время это. Если это займет где-то около этого часа, входные данные просто большие.
Если этого не произойдет, гораздо более вероятно, что у вас менее звездное соединение с вашей базой данных.