Ускорение метода панд 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.

Время это. Если это займет где-то около этого часа, входные данные просто большие.

Если этого не произойдет, гораздо более вероятно, что у вас менее звездное соединение с вашей базой данных.

Другие вопросы по тегам