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

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

Сообщение Anonymous »

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

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

Driver : ODBC 18 для SQL Server; UID: ; pwd : ; autoCommit = yes ; TurnedServerCertificate = yes

SQL Alchemy Create_Engine = ("mssql+pyodbc: ///? Odbc_connect =%s" params , fast_executemany = true ", onesolation_level =" AutoCommit ")
case 1 : pandas to_sql (это требует от 4 до 5 часов для загрузки)
Вот как я загружаю огромные данные в DataFrame Chunk от chunk < /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>
[b] Загрузка 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','n - Сервер] [Поле подсчета поля неверна или синтаксическая ошибка (0) (sqlexecdirectw)]

case 3 [/b]: sql oxert () < /p>
Вот как я загружаю огромные данные в chunk -> DataFrame-> Sql Server Таблица с использованием 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)
Загрузка DataFrame в таблицу SQL Server
с то же самое для цикла

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

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»