C# 在C中从SQL Server数据库加载大量数据#
我正在使用C# 在C中从SQL Server数据库加载大量数据#,c#,sql-server,C#,Sql Server,我正在使用csvhelp创建一个.csv文件 这是我的代码: public async Task LoadLargeDataToCsvFile(string pFileName, string pSql) { SqlCommand cmd = new SqlCommand(pSql, GetSqlConnection); cmd.CommandType = CommandType.Text; cmd.CommandTimeout =
csvhelp
创建一个.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();
}
}
}
}
或
我在表中有60000行和10列。不管代码的csvhelper部分如何,SQL查询很可能需要很长时间。您是否尝试过单独运行SQL查询,并查看在SSMS或您选择的SQL管理器中需要多长时间?如果SQL性能仍然需要很长时间,那么有很多方法可以提高SQL性能minute@ChentalGraciaMigra-您是否尝试过加载表而不是写入流以查看问题所在?类似这样的东西:使用(var reader=await cmd.ExecuteReaderAsync(System.Data.CommandBehavior.SequentialAccess).ConfigureAwait(false)){dt.Load(reader);}@ChentalGraciaMigra-为什么需要通过Task.Run()调用,而不是通过result=await cConnection.LoadLargeDataFromSqlToCsvFile调用(args[0],args[1])?这是一个或另一个。但我理解。不是加载而是读取产品文件需要两个多小时的时间。
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();
}