在不使用BULK INSERT的情况下插入大量行的最快方法是什么?

时间:2011-05-27 20:43:15

标签: sql-server-2008 sqlcmd

我正在运行带有sqlcmd的SQL文件,它将许多行插入到MS SQL服务器(2008 R2)中,执行BULK INSERT将是最佳的,但SQL服务器可能无法访问数据文件。

MS SQL Server 2008 R2上还有哪些其他方法或选项可以快速插入?

2 个答案:

答案 0 :(得分:1)

最后编写了一个使用System.Data.SqlClient.SqlBulkCopy的自定义C#应用程序。同时将包含数据的SQL文件替换为System.Data.DataTable.WriteXml生成的XML文件,稍后可以使用ReadXml导入这些文件,并直接与SqlBulkCopy一起使用。

此解决方案比使用普通INSERT快约10倍,比使用每行1000行的插入快50倍。 (为什么每个语句插入多行值比插入语句慢得多,每行一行对我来说都是个谜。)

答案 1 :(得分:1)

您也可以使用bcp实用程序。我发现它更快更好比BULK INSERT语句更容易使用。唯一需要注意的是,您可能需要在服务器本身上运行它。将您的文件放在服务器可访问的共享目录中。不确定你是否真的需要这样做。