c# - 我需要解析 250 个文件,总计 1gb 的数据并将其上传到 SQL 服务器。我能比这更有效率吗?

标签 c# sql file parsing

我目前的方法需要大约 40 分钟来解析所有这些数据:

目前的逻辑是:

foreach (var file in files)<br/>{<br/>    using (var input = new StreamReader(file.FullName))<br/>    {<br/>        while (!input.EndOfStream)<br/>        {<br/>            City parsedCity = ParseCity(input.ReadLine());<br/>        }<br/>        SQL.submit()<br/>    }<br/>}

您可能认为解析是最快的。

最佳答案

尝试这样的事情。尝试使用 maxParallelism,从系统中的核心数开始:

class Program
{
    static void Main(string[] args)
    {
        var maxParallelism = Environment.ProcessorCount;
        Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = maxParallelism }, ParseAndPersist);
    }

    public static void ParseAndPersist(FileInfo fileInfo)
    {
        //Load entire file

        //Parse file

        //Execute SQL asynchronously..the goal being to achieve maximum file throughput aside from any SQL execution latency

    }
}

关于c# - 我需要解析 250 个文件,总计 1gb 的数据并将其上传到 SQL 服务器。我能比这更有效率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9260404/

相关文章:

c# - C# 文档工具,不仅可以从源代码生成文档

c# - 以下正则表达式在做什么 (?-mix :{0})

sql - 重命名 PostgreSQL 中的多个列

java - 我们如何在单个语句中使用 RandomAccessFile 创建文件夹和文件?

c# - TcpClient 过早处置

c# - Xamarin 表单 UWP 工具提示

sql - SSIS错误: VS_NEEDSNEWMETADATA

mysql - SQL JOIN PARENT AND CHILD 并获取父项和子项记录的计数

c++ - 无法读取 .txt 文件

Bash 脚本根据另一个文件中指定的日期从日志文件中提取条目?