>  기사  >  데이터 베이스  >  임시 CSV 파일을 사용하여 MySQL로 DataTable 대량 복사를 최적화하는 방법은 무엇입니까?

임시 CSV 파일을 사용하여 MySQL로 DataTable 대량 복사를 최적화하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 06:11:02703검색

How to Optimize Bulk Copying DataTables into MySQL Using a Temporary CSV File?

임시 CSV 파일을 사용하여 MySQL에 DataTable 대량 복사

Microsoft SQL Server에서 MySQL로 마이그레이션할 때 대량 복사 문제가 발생할 수 있습니다. 직접 DataTable 쓰기를 사용하여 복사합니다. SqlBulkCopy 클래스는 MySQL에서 기본적으로 사용할 수 없지만 최적의 성능을 위해 임시 CSV 파일을 중개자로 사용하는 것을 고려해 볼 가치가 있습니다.

피해야 할 한 가지 가정은 CSV 파일을 통한 대량 로드가 본질적으로 성능 저하로 이어진다는 것입니다. 성능. 경험적 테스트에 따르면 MySqlBulkLoader 클래스를 사용하면 MySqlDataAdapter를 통한 직접 업데이트에 비해 삽입 시간을 크게 줄일 수 있는 것으로 나타났습니다.

이를 달성하려면 다음 단계를 따르세요.

  1. DataTable 내용을 적합한 CSV 작성기를 사용하여 임시 CSV 파일.
  2. 새 MySqlBulkLoader 개체를 초기화하고 해당 속성을 설정합니다.

    • TableName을 대상 테이블과 일치하도록
    • CSV 파일을 가리키는 FileName
    • 필요에 따라 FieldTerminator 및 FieldQuotationCharacter
  3. Load() 메서드를 호출하여 CSV 파일에서 데이터를 대량 로드합니다
  4. 로드가 완료된 후 임시 CSV 파일 삭제

예제 코드:

<code class="csharp">string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv";
using (StreamWriter writer = new StreamWriter(tempCsvFileSpec))
{
    Rfc4180Writer.WriteDataTable(rawData, writer, false);
}
var msbl = new MySqlBulkLoader(conn);
msbl.TableName = "testtable";
msbl.FileName = tempCsvFileSpec;
msbl.FieldTerminator = ",";
msbl.FieldQuotationCharacter = '"';
msbl.Load();
System.IO.File.Delete(tempCsvFileSpec);</code>

MySQLBulkLoader 클래스와 임시 CSV 파일을 활용하면 DataTables를 효율적으로 대량 복사할 수 있습니다. 직접 업데이트에 비해 성능이 향상되었습니다.

위 내용은 임시 CSV 파일을 사용하여 MySQL로 DataTable 대량 복사를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.