Я могу использовать 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)
с то же самое для цикла
Код: Выделить всё
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