使用 C#.net sql 数据库将本地收集的信息存储在 .csv 文件中的最佳方法是什么?我问的原因是 1:我要处理的数据很大(每个 csv 中有数百万行)。 2:数据极其精确,因为它描述了纳米尺度的测量,因此很微妙。
我的第一个想法是将 csv 的每一行存储在数据库中的对应行中。我使用 DataTable.cs 类来完成此操作。完成后,我觉得如果解析 .csv 文件时出现问题,我永远不会注意到。
我的第二个是将 .csv 文件以 .csv 格式上传到数据库,然后在用户请求时将文件从数据库解析到本地环境。如果甚至可以在 c#.net 中使用 Visual Stuido 2013,那么如何以高效且安全的方式完成此操作?
最佳答案
我使用了 csv reader 中的 .Net DataStreams 库在我的项目中。它使用 SqlBulkCopy 类,尽管它不是免费的。
示例:
using (CsvDataReader csvData = new CsvDataReader(path, ',', Encoding.UTF8))
{
// will read in first record as a header row and
// name columns based on the values in the header row
csvData.Settings.HasHeaders = true;
csvData.Columns.Add("nvarchar");
csvData.Columns.Add("float"); // etc.
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "DestinationTable";
bulkCopy.BulkCopyTimeout = 3600;
// Optionally, you can declare columnmappings using the bulkCopy.ColumnMappings property
bulkCopy.WriteToServer(csvData);
}
}
关于c# - Csv 文件到 Sql 数据库 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047483/