首页 > 解决方案 > 在 C# 中从 SQL Server 数据库加载大量数据

问题描述

csvhelper用来创建一个.csv文件。

这是我的代码:

    public async Task LoadLargeDataToCsvFile(string pFileName, string pSql)
    {
        SqlCommand cmd = new SqlCommand(pSql, GetSqlConnection);
        cmd.CommandType = CommandType.Text;
        cmd.CommandTimeout = 0;

        using (StreamWriter writer = new StreamWriter(pFileName, false, Encoding.UTF8))
        {
            using (CsvWriter csvWriter = new CsvWriter(writer))
            {
                    csvWriter.Configuration.Delimiter = ";";
                    csvWriter.Configuration.RegisterClassMap<CChevalPropertiesMap>();

                using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        for (int i = 0; i < reader.FieldCount; i++)
                        {
                                csvWriter.WriteField(reader[i]);
                        }

                        await csvWriter.NextRecordAsync();
                    }

                    reader.Close();
                }
            }
        }
    }

这段代码需要很长时间才能执行,但我认为它做得很好。

这是电话:

await Task.Run(()=> cConnection.LoadLargeDataFromSqlToCsvFile(args[0], args[1]));

或者

IAsyncResult result;

result = Task.Run(()=> cConnection.LoadLargeDataFromSqlToCsvFile(args[0], args[1]));

while (!result.IsCompleted)
{
    Application.DoEvents();
}

我在表中有 60000 行和 10 列。

标签: c#sql-server

解决方案


推荐阅读