You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用.NET Core Web API读取本地计算机中的CSV文件

批量导入目录中CSV文件到数据库及.NET Core Web API读取本地CSV方法

一、批量导入目录下所有CSV文件到数据库

开发中经常需要把目录内的所有CSV文件批量导入数据库,以下是实现该需求的核心逻辑与代码:

CSV读取核心连接字符串

通过OLEDB读取CSV文件的连接字符串模板:

const string CSV_CONNECTIONSTRING = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""{0}"";Extended Properties=""text;HDR=YES;FMT=Delimited""";
  • {0} 需替换为CSV文件所在的目录路径(不是单个文件路径)
  • HDR=YES 表示CSV第一行是表头,读取时会将其作为列名处理
  • FMT=Delimited 指定文件为逗号分隔格式

完整导入代码示例

using System.Data.OleDb;
using System.IO;
using System.Data.SqlClient;

public void ImportAllCsvToDb(string csvDirectory, string dbConnStr)
{
    // 获取目录下所有CSV文件
    var csvFiles = Directory.GetFiles(csvDirectory, "*.csv", SearchOption.TopDirectoryOnly);
    
    foreach (var csvFile in csvFiles)
    {
        var dirPath = Path.GetDirectoryName(csvFile);
        var fileName = Path.GetFileName(csvFile);
        
        // 构建CSV连接字符串
        var csvConnStr = string.Format(CSV_CONNECTIONSTRING, dirPath);
        
        using (var csvConn = new OleDbConnection(csvConnStr))
        {
            csvConn.Open();
            // 读取CSV数据(假设表名与文件名一致,可按需调整)
            var query = $"SELECT * FROM [{fileName}]";
            using (var cmd = new OleDbCommand(query, csvConn))
            using (var reader = cmd.ExecuteReader())
            {
                // 批量插入到SQL Server数据库
                using (var bulkCopy = new SqlBulkCopy(dbConnStr))
                {
                    bulkCopy.DestinationTableName = "目标数据库表名"; // 替换为实际表名
                    bulkCopy.WriteToServer(reader);
                }
            }
        }
    }
}

二、.NET Core Web API读取本地CSV文件

在.NET Core Web API中读取本地CSV文件,可通过原生文件操作结合简单解析实现,示例如下:

基础读取实现(原生方式)

using Microsoft.AspNetCore.Mvc;
using System.IO;

[ApiController]
[Route("api/csv")]
public class CsvController : ControllerBase
{
    [HttpGet("read-local")]
    public IActionResult ReadLocalCsv(string filePath)
    {
        if (!System.IO.File.Exists(filePath))
        {
            return NotFound("指定的CSV文件不存在");
        }
        
        // 读取所有行
        var lines = System.IO.File.ReadAllLines(filePath);
        if (lines.Length == 0)
        {
            return Ok("CSV文件为空");
        }
        
        // 解析表头与数据行
        var header = lines[0].Split(',');
        var data = lines.Skip(1).Select(line => line.Split(',').ToList()).ToList();
        
        return Ok(new { Header = header, Data = data });
    }
}

注意事项

  • .NET Core应用读取本地文件时,需确保程序拥有对应目录的读写权限
  • 若CSV包含复杂格式(如带逗号的字段、换行符),建议使用CsvHelper等第三方库简化解析逻辑

内容的提问来源于stack exchange,提问作者Shanmuga Mahesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:40:24