【问题标题】: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 行适合一个列表而不会出现内存不足异常。应该是怪物级的超级计算机。

标签: c# ms-access bigdata database


【解决方案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();
                }
            }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-03-31
  • 2011-09-21
  • 2013-08-11
  • 1970-01-01
  • 2012-10-06
  • 2015-11-27
  • 2020-01-21
  • 2011-03-09
相关资源
最近更新 更多