Ужасно медленная загрузка пандас -кадр с 150 столбцами и 5 миллионами строк в SQL ServerPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ужасно медленная загрузка пандас -кадр с 150 столбцами и 5 миллионами строк в SQL Server

Сообщение Anonymous »

Я пытаюсь загрузить данные из DataFrame Pandas с 150 столбцами и 5 миллионами строк на данный момент на моей машине или платформе без сервера Prod требует от 4 до 5 часов для загрузки в таблицу SQL Server. < /p>
В таблице нет индексов и ее прямой дамп. Если я использую тот же файл SSI, потребуется всего от 5 до 8 минут для загрузки. NO NETWORK или NO ввода -вывода. /p>
Я использовал ниже методы: < /p>

pandas to_sql < /p>
< /li >
SQL Alchemy insert ()
Не могли бы вы предложить лучший и быстрый способ загрузки данных. < /p>
< /li>
< /ol>
Am использую

Driver < /strong>: odbc 18 для SQL Server; UID: ; pwd < /strong>: ; autoCommit = yes; TrustedServerCertificate = yes

sql alchemy create_engine
= ("mssql+pyodbc: ///? Odbc_connect =%s" params , fast_executemany = true ", osolation_level =" autocommit ")
case 1 : pandas to_sql (это требует от 4 до 5 часов для загрузки)

Вот как я загружаю огромные данные в DataFrame Chunk от chunk < /strong> < /p>

Код: Выделить всё

data_chunk = pd.Data_Frame()
data_chunk = pd.read_csv('file_path, chunksize=50000,sep='I')
for chunk. in data_chunk:
finaldata = finaldata._append(str)
< /code>
 Загрузка DataFrame в таблицу SQL Server < /strong>

finaldata.to_sql('Table_Name',conn=engine.connect(),if_exists='append',index=False,chunk_size=50000)

ниже процесс работает finewith chunk_size = 10, но у меня есть миллионы записей. С Chunk_size = 15+, он дает ниже ошибку < /p>

Код: Выделить всё

pyodbc.error:('07002','[07002] [Microsoft][ODBC Driver 18 for SQL Server][COUNT field incorrect or syntax error (0) (SQLExecDirectw)]
< /code>
 case 3 < /strong>: sql alchemy insert ()

** Вот как я загружаю огромные данные в chunk -> dataframe-> Таблица SQLServer с использованием SQL Alchemy Insert () ** < /p>
data_chunk = pd.Data_Frame()
data_chunk = pd.read_csv('file_path, chunksize=10,sep='I')
for chunk. in data_chunk:
finaldata = finaldata._append(str)
< /code>
 Загрузка DataFrame в таблицу SQL Server < /strong>

--with in the same for loop
Session = sessionmaker(bind=engine)
session = Session()
data_to_insert = finaldata.to_dict(orient='records')
stmt = insert(table).values(data_to_insert)
session.execute(stmt)
session.commit()
session.close()
Пожалуйста, предложите мне, как быстрее загружать данные.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -rows-into
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»