首页 >后端开发 >C++ >如何有效地将CSV数据加载到.NET DataTable中?

如何有效地将CSV数据加载到.NET DataTable中?

Barbara Streisand
Barbara Streisand原创
2025-01-27 19:31:08969浏览

高效将CSV数据加载到.NET DataTable中

将CSV数据加载到DataTable是数据处理和分析中的一项常见任务。本文探讨如何使用.NET的内置功能实现此目标,重点解决从CSV文件创建架构的问题。

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