c# - 高效的批量数据插入

标签 c# asp.net sql

我在数据日志文件中有以下格式的数据。

每一行代表数据库中的一行,一次要插入 500-1000 行。

最好直接调用存储过程向数据库中插入数据(存储过程包含调用日志文件和插入数据的逻辑)

在应用程序中解析并插入数据是否更好。

   29   2011-02-01 11:00:40 1   0   1   0
   30   2011-02-01 11:00:44 1   0   1   0
   32   2011-02-01 11:00:49 1   0   1   0

最佳答案

这可能是 .tsv 格式(制表符分隔值)。

LOAD DATA LOCAL INFILE 'uniq.csv' INTO TABLE tbl
     FIELDS TERMINATED BY '\t'
     ENCLOSED BY ''
     LINES TERMINATED BY '\n'
(column1, column2, column3)

\t 是制表符。如果它不起作用,请将其更改为空间。

逐行手动处理效率不高,因为当您尝试逐行读取时,会多次访问硬盘。 LOAD 命令应该一次读取整个文件。

您应该记住,索引会严重减慢这样的插入速度。如果您需要读取大量数据(例如 100000 行)- 有时最好删除索引、插入并在插入后重新创建索引。

关于c# - 高效的批量数据插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9350649/

相关文章:

c# - 如何操作 Html.ActionLink 以显示到另一个 Controller 的链接?

c# - LINQ 和 EF 与 string.StartsWith(char c)

mysql - 如何在 SQL 中对逗号分隔的字符串求和?

c# - ASP.NET : How do I avoid duplicating Seed Data?

c# - LINQ 中的条件连接

c# - ASP.Net MVC 3 中单独项目的数据访问层和业务逻辑层

c# - ASP.Net C# GridView

mysql - GROUP BY 不返回每个特定字段的所有行

sql - Groovy,如何进行两阶段提交?在Sql.withTransaction中可以跨多个数据库管理transactionscope吗?

c# - Chrome/FF 中 JS 脚本的问题