如何将大量数据插入数据库[重复]

Posted

技术标签:

【中文标题】如何将大量数据插入数据库[重复]【英文标题】:How to insert a lot of data into database [duplicate] 【发布时间】:2016-12-11 22:12:47 【问题描述】:

我在 C# 中有一个程序,它从 4 个来源(2 个 excel 表、oracle 和 access 数据库)下载数据并相互计算它们。结果我有一些大的结果,我将结果保存在列表中。结果中的行数大约等于 120.000。一排大约是10MB。结果插入到access数据库中。

如何将此列表插入到我的数据库中?有人可以给我一个例子吗?

现在我将行一一插入到表中。我花了大约 3 个小时来完成这项工作。

【问题讨论】:

那是 SQL Server 吗? 天哪! 120.000 行,每行 10 MB?!你在那个数据库里做什么? 通过网络拖动 1.2 GB 并插入数据库需要 3 小时。这很公平。 60个财经栏目怎么占10Mb空间???而且由于它超出了 32 位访问的限制,那是 64 位吗?我肯定会首先考虑转向真正的数据库。 有趣的是,10 Mb * 120,000 行适合一个列表而不会出现内存不足异常。应该是怪物级的超级计算机。 【参考方案1】:

使用某种批量插入。如果您使用实体框架来处理您的数据库,那么您需要这样的东西。也可以最大限度地延长超时时间。

 using (var transactionScope = new System.Transactions.TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0)))
            
                try
                
                    ctx.BulkInsert(productsToSync, new BulkInsertOptions()
                    
                        TimeOut = 10 * 60 * 1000
                    );
                    await ctx.SaveChangesAsync();
                
                catch (Exception ex)
                
                    SystemLogManager.AddDataSyncErrorLog(ex);
                
                finally
                
                    transactionScope.Complete();
                
            

【讨论】:

这需要efbulkinsert.codeplex.com吗?您可能希望将其包含在您的答案中。

以上是关于如何将大量数据插入数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章

#导入Word文档图片#值得收藏:当向数据库导入大量数据时,mysql主键唯一键重复插入,如何丝滑操作并不导入重复数据呢

关于PHPExcel 导入导出大量数据及导入时判断是不是存在重复

需要使用实体框架将大量记录插入数据库

如何在将大量数据插入数据库之前检查记录是不是存在?

如何使用 sqlplus 终端将大量数据插入 Oracle DB 中的“长”数据类型?

c#如何向Cassandra表中插入大量数据