将数据添加到数据库的最快方法

时间:2015-03-06 10:14:37

标签: sql sql-server insert merge

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

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

非常感谢

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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]

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

答案 2 :(得分:0)

sql server中有bcp命令。这为此目的开辟了一个实用工具。

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