>백엔드 개발 >C++ >CSV 데이터를 .NET DataTable에 효율적으로 로드하는 방법은 무엇입니까?

CSV 데이터를 .NET DataTable에 효율적으로 로드하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-27 19:31:08982검색

CSV 데이터를 .NET DataTable에 효율적으로 로드

CSV 데이터를 DataTable에 로드하는 것은 데이터 처리 및 분석에서 일반적인 작업입니다. 이 문서에서는 CSV 파일에서 스키마를 만드는 데 중점을 두고 .NET의 기본 제공 기능을 사용하여 이를 달성하는 방법을 살펴봅니다.

How to Efficiently Load CSV Data into a .NET DataTable?

표준 ADO.NET 기능 사용

표준 ADO.NET 프레임워크는 CSV 파일 읽기를 직접 지원하지 않습니다. 그러나 OleDb 공급자를 활용하여 스키마 정의 파일을 생성하여 CSV 데이터를 가져올 수 있습니다.

.INI 파일을 사용하여 스키마 생성

스키마 파일(schema.ini)을 생성하려면 다음 단계를 따르세요.

  1. schema.ini라는 파일에 다음 코드를 입력하세요.
<code>[FileName.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0</code>
  1. CSV 파일과 동일한 디렉터리에 파일을 저장하세요.

코드 구현

다음 코드는 스키마 정의 파일과 함께 OleDb 공급자를 사용하여 CSV 데이터를 DataTable에 로드하는 방법을 보여줍니다.

<code class="language-csharp">using System.Data;
using System.Data.OleDb;
using System.Globalization;
using System.IO;

static DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader)
{
    string header = isFirstRowHeader ? "Yes" : "No";

    string pathOnly = Path.GetDirectoryName(path);
    string fileName = Path.GetFileName(path);

    string sql = @"SELECT * FROM [" + fileName + "]";

    using (OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
        ";Extended Properties=\"Text;HDR=" + header + "\""))
    using (OleDbCommand command = new OleDbCommand(sql, connection))
    using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
    {
        DataTable dataTable = new DataTable();
        dataTable.Locale = CultureInfo.CurrentCulture;
        adapter.Fill(dataTable);
        return dataTable;
    }
}</code>

이 방법은 CSV 파일 경로와 첫 번째 행에 열 헤더가 포함되어 있는지 여부를 나타내는 플래그를 입력으로 사용합니다. CSV 데이터를 기반으로 채워진 DataTable을 반환합니다.

이 방법은 첫 번째 행이 헤더인지 여부를 나타내는 매개변수로 CSV 파일 경로와 부울 값을 허용합니다. CSV 데이터로 채워진 DataTable을 반환합니다. 개선된 코드는 using System.Globalization;using System.IO; 네임스페이스 참조를 추가하고 코드의 기능을 더욱 명확하게 보여줍니다.

위 내용은 CSV 데이터를 .NET DataTable에 효율적으로 로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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