c# - 在 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 列。
解决方案
推荐阅读
- android - 从 docker 容器连接到主机上的 android 模拟器
- gradle - Gradle - 无法在空对象上设置属性
- android - ProgressDialog 不显示
- azure - 您无权查看此目录或页面
- java - Iterating recurring timestamps for a given range in Time4j
- html - 如何通过 XPath 检索 [对象文本]?
- azure - 由 cloud_RoleInstance 筛选的自定义指标的 Azure Monitor 警报
- javascript - JavaScript 或 JQuery 如何读取 C# 图像字节数组并显示图像?
- android - 从 Java 到 Kotlin:同步和锁定/等待/通知模式
- android - 输入事件不会使用角度触发Android设备上的功能