【问题标题】:Fastest way to add data to database将数据添加到数据库的最快方法
【发布时间】:2015-05-07 22:18:59
【问题描述】:

大家好,我有 5 个相当大的 excel 文件(每个 800,000 行),我要导入 sql 数据库。我已经编写了一个工具来执行此操作,但是我一次又一次地从一个电子表格中导入一行,这需要大约 15 个小时才能完成,因为这需要每月完成一次,所以我想知道最快的方法是什么这个。

一次运行所有五个导入但到不同的临时表并合并它们会更快,还是只是更快地插入和更新并且批量插入是否会提高速度?

非常感谢

【问题讨论】:

  • 根据我的经验,BULK 插入比一次插入 1 快得多。
  • 批量插入的行数有限制吗?
  • 还没有听说过 BULK 的限制,我已经将它用于具有数百万行的文件,它很快就会通过它们,所以你应该很好。
  • 从这里social.msdn.microsoft.com/Forums/sqlserver/en-US/… SQL MVP 说没有这样的行限制。

标签: sql sql-server insert merge


【解决方案1】:

尝试使用BCP 命令。它通常比常规插入更快。

bcp {dbtable | query} {in | out | queryout | format} datafile

[-n native type] [-c character type] [-S server name] [-U username]

[-P password] [-T trusted connection]

还要检查您要导入的表是否有索引。尝试删除索引并插入数据。

【讨论】:

  • 当我使用 bcp 时,我得到的只是 0 行复制。 bcp database.dbo.temp2 in "D:\temp\test.csv" -S SERVER-PC\SQLEXPRESS -T -q -c -t,它给了我 SQLState = S1000, NativeError = 0 Error = [Microsoft][SQL Server Native Client 11.0]在 BCP 数据文件中遇到意外的 EOF
【解决方案2】:

sql server 中有 bcp 命令。正是为此目的打开了一个实用程序。

Import and Export Bulk Data by Using the bcp Utility (SQL Server)

【讨论】:

    【解决方案3】:

    批量插入技术将是最快的。实现每分钟数百万条记录的速度很常见,但很大程度上取决于列数、行大小、硬件。等等

    命令行BCP 实用程序和T-SQL BULK INSERT 语句本身不支持Excel 文件,但可以处理分隔的文本文件。您可以考虑使用 SQL Server Integration Services 包,它可以直接导入 Excel 文件,并在指定快速加载选项时使用批量插入方法。如果您以前没有使用过 SSIS,那么会有一些学习曲线。另一种选择是使用 .NET 应用程序中的 SqlBulkCopy。

    SQL Server 批量插入流数据,因此对每批的记录数没有硬性限制。对于非常大的文件,通常分批执行批量插入,以便在操作完全记录时减少事务日志空间需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-09
      • 2011-09-08
      • 2016-10-30
      • 2023-02-19
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 2012-03-22
      相关资源
      最近更新 更多