대량 삽입 작업은 Microsoft SQL Server에 대규모 데이터 세트를 삽입하는 성능을 크게 향상시킬 수 있습니다. 이 기사에서는 이러한 삽입을 최적화하기 위한 대체 접근 방식을 탐색하고 질문에 제공된 코드가 직면한 특정 문제를 해결합니다.
Fast Executemany(Pyodbc 4.0.19): 최신 버전의 Pyodbc(4.0.19)는 다중 행 삽입 실행을 신속하게 처리하도록 설계된 Cursor#fast_executemany 기능을 제공합니다. crsr.fast_executemany를 True로 설정하면 기본 excutemany 방법에 비해 성능이 크게 향상될 수 있습니다.
<code class="python"># Connect to the database and create a cursor with fast_executemany enabled cnxn = pyodbc.connect(conn_str, autocommit=True) crsr = cnxn.cursor() crsr.fast_executemany = True # Execute the bulk insert operation with parameters sql = "INSERT INTO table_name (column1, column2) VALUES (?, ?)" params = [(data1, data2) for (record_id, data1, data2) in data] crsr.executemany(sql, params)</code>
Pandas DataFrame을 사용하여 반복: 또는 , Pandas를 사용하여 CSV 데이터를 DataFrame으로 읽고 최적화된 to_sql() 메서드를 활용할 수 있습니다. 이 접근 방식은 데이터 삽입을 간소화하고 청크 분할 및 유형 변환과 같은 다양한 최적화를 지원합니다.
<code class="python">import pandas as pd # Read CSV data into a DataFrame df = pd.read_csv(csv_file) # Establish a database connection engine = sqlalchemy.create_engine(conn_str) # Insert DataFrame into the database using `to_sql()` df.to_sql('table_name', con=engine, if_exists='append', index=False)</code>
대량 복사 인터페이스(BCP): 대량 복사 인터페이스( BCP)는 파일과 데이터베이스 테이블 간의 고속 데이터 전송을 허용하는 기본 SQL Server 유틸리티입니다. BCP는 표준 SQL INSERT 문에 비해 여러 가지 성능 이점을 제공합니다.
bcp {table_name} in {csv_file} -S {server} -d {database} -E
특정 시나리오에 대한 최적의 접근 방식은 데이터 크기, 서버 등의 요소에 따라 달라집니다. 구성 및 사용 가능한 리소스. 일반적으로 fast_executemany는 커서를 통한 반복에 비해 상당한 성능 향상을 제공하는 반면 BCP는 대량 삽입 시나리오에서 두 가지 모두보다 성능이 뛰어난 경우가 많습니다.
위 내용은 Pyodbc를 사용하여 MS SQL Server에 대량 삽입 속도를 높이는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!