Python - запись в базу данных сервера SQL с использованием sqlalchemy из кадра данных pandas

1

У меня есть рамка данных pandas размером около 300 000 строк (20 мб) и вы хотите записать в базу данных SQL-сервера.

У меня есть следующий код, но он очень медленный. Хотите узнать, есть ли лучший способ?

import pandas
import sqlalchemy

engine = sqlalchemy.create_engine('mssql+pyodbc://rea-eqx-dwpb/BIWorkArea? 
driver=SQL+Server')

df.to_sql(name='LeadGen Imps&Clicks', con=engine, schema='BIWorkArea', 
if_exists='replace', index=False)
Теги:
sql-server
pandas
sqlalchemy

1 ответ

2

Если вы хотите ускорить процесс записи в базу данных sql, вы можете настроить типы данных таблицы в своей базе данных по типу данных ваших pandas DataFrame

from sqlalchemy import types, create_engine
d={}
for k,v in zip(df.dtypes.index,df.dtypes):
    if v=='object':
       d[k]=types.VARCHAR(df[k].str.len().max())
    elif v=='float64':
       d[k]=types.FLOAT(126)
    elif v=='int64':
       d[k] = types.INTEGER()

затем

df.to_sql(name='LeadGen Imps&Clicks', con=engine, schema='BIWorkArea', if_exists='replace', index=False,dtype=d)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню