在一个SQL查询中多次插入

时间:2011-08-01 09:33:46

标签: sql sql-server insert bulkinsert

DB:SQL server

我使用以下构造将多个记录插入表中。我正从其他数据库接收数据(要插入)。

  

插入table1       选择'1','2'UNION ALL       选择'3','4'UNION ALL       选择'5','6';

是否有任何其他机会在较少的时间内进行插入。它也作为Web请求执行。我猜这里的批量插入不适合,因为我没有文件中的数据来进行批量插入。 有任何建议请..

4 个答案:

答案 0 :(得分:1)

如果源数据库也是SQL Server,则可以添加链接服务器并:

insert table1 select * from linkedserver.dbname.dbo.table1

如果从.NET代码插入,插入多行的最快方法是SqlBulkCopy。 SqlBulkCopy确实需要DBO权限。

答案 1 :(得分:0)

这实际上是我见过的最好的多重插入。注意SQL注入,始终在ASP.NET中使用CommandParameters或在MySQL中使用mysql_real_escape。

答案 2 :(得分:0)

我最近调查了这篇文章,来自MySQL并期待来自cularis'答案的语法,但经过一些搜索后,我找到的就是你在答案中发布的语法。

编辑:看起来cularis删除了他的答案,他在谈论INSERT INTO x VALUES (1, 2), (3, 4);语法。

答案 3 :(得分:0)

如果您使用的是SQL Server 2008和存储过程,则始终可以使用表值参数:

http://www.sqlteam.com/article/sql-server-2008-table-valued-parameters

然后变为INSERT INTO ... SELECT * FROM ...

这有助于防止注射问题。不确定参数化SQL是否可行。