【问题标题】:SQL Server bulk insert for large data set大型数据集的 SQL Server 批量插入
【发布时间】:2016-08-12 03:22:26
【问题描述】:

我在一个文件中有 100 万行数据,我想将所有记录插入 SQL Server。在插入时,我正在与服务器上的现有数据进行一些比较,如果比较满意,我将更新服务器中的现有记录,否则我将从文件中插入记录。

我目前正在通过从 C# 循环执行此操作,这需要 3 个多小时才能完成工作。任何人都可以提出提高性能的想法吗?

谢谢, 泽维尔。

【问题讨论】:

  • BCP.......
  • 感谢您的回复。我们可以使用批量复制程序与现有数据进行比较吗,我是新手
  • 您必须将数据加载到中间表(堆),创建索引,比较,最后更新目标表。使用 BCP 或任何其他批量加载方法,加载通常需要 10-20 秒,最多几分钟。
  • 感谢您的回复,您的意思是 bcp 将单独用于批量加载到临时表中。之后我需要和这百万数据进行比较,恐怕比较需要更多时间
  • msdn.microsoft.com/en-us/library/ms175937.aspx - 它解释了可用的方法和示例代码

标签: sql sql-server bulkinsert


【解决方案1】:
  1. 检查您的数据库是处于完全恢复模式还是简单恢复模式:

    SELECT recovery_model_desc FROM sys.databases WHERE name = 'MyDataBase';

  2. 如果数据库是SIMPLE 恢复模式,您可以在那里创建一个临时表。如果它处于Full 模式,那么最好使用Simple 模型在单独的数据库中创建临时表。
  3. 使用任何 BulkInsert 操作/工具(例如 BCP,如前所述)
  4. 仅插入暂存表中不存在于目标表中的那些数据。 (希望你知道怎么做)

【讨论】:

    猜你喜欢
    • 2011-01-16
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多