c# - Csv 文件到 Sql 数据库 C#

标签 c# mysql sql-server csv

使用 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/

相关文章:

mysql - 是否可以在 MYSQL 数据库列中给出条件?

Mysql、SQLite、可扩展性

sql-server - 如何使用 'inserted' 和 'deleted' 表中的 text、ntext 或 image 列

c# - 如何重新访问之前在子控件中声明的用户控件?

c# - Properties.Settings.Save() 仅在第一次调用时保存

c# - 使用 Web 浏览器控件提供 jar 装脱机 Web 内容

mysql - 将 last_modified 列添加到所有表是否有点矫枉过正?

sql-server - SQL Server 如何存储复合主键?

sql - Max() 通过日期条件进行分区

c# - 使用 C# 从 SQL Server 数据生成 XML