В таблице нет индексов и ее прямой дамп. Если я использую тот же файл 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