我知道我已经在几年前做过这个了,但是我记不起语法了,由于提取了大量关于“批量导入”的帮助文档和文章,我无法在任何地方找到它 .
这是我想要做的,但语法不完全正确...请,之前做过这个的人,帮帮我:)
INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy'),
(124, 'Jonny'),
(125, 'Sally')
我知道这接近正确的语法 . 我可能在那里需要"BULK"这个词,或者其他什么,我不记得了 . 任何的想法?
我需要这个SQL Server 2005数据库 . 我试过这段代码,但无济于事:
DECLARE @blah TABLE
(
ID INT NOT NULL PRIMARY KEY,
Name VARCHAR(100) NOT NULL
)
INSERT INTO @blah (ID, Name)
VALUES (123, 'Timmy')
VALUES (124, 'Jonny')
VALUES (125, 'Sally')
SELECT * FROM @blah
我正在 Incorrect syntax near the keyword 'VALUES'.
13 回答
我一直在使用以下内容:
它将为ID和Name添加十行,具有唯一的GUID .
注意:不要用';'结束最后一行(GO 10)因为它会抛出错误:发生了致命的脚本错误 . 解析GO时遇到错误的语法 .
如果您的数据已经在数据库中,您可以:
如果您需要对数据进行硬编码,那么SQL 2008及更高版本允许您执行以下操作...
你可以使用一个联盟:
对于SQL Server 2008,这看起来没问题 . 对于SS2005及更早版本,您需要重复VALUES语句 .
EDIT:: 我的不好 . 你必须为SS2005中的每一行重复'INSERT INTO' .
你可以这样做(丑陋但它有效):
或者您可以使用另一种方式
在SQL Server中使用XML来插入多行会更容易,否则会变得非常繁琐 .
查看完整文章,其中包含代码说明http://www.cyberminds.co.uk/blog/articles/how-to-insert-multiple-rows-in-sql-server.aspx
将以下代码复制到sql server中以查看示例 .
对应于INSERT (Transact-SQL)(SQL Server 2005),您不能省略
INSERT INTO dbo.Blah
并且必须每次都指定它或使用其他语法/方法,使用
INSERT INTO ... VALUES
语法中的INSERT INTO ... VALUES
语法有一个恼人的限制:省略此限制的最简单方法是使用派生表,如:
LiveDemo
这将从SQL Server 2008开始
对于SQL Server 2008,可以在一个VALUES子句中完全根据您的问题中的语句执行它(您只需要添加一个逗号来分隔每个值语句)...
您的语法几乎适用于SQL Server 2008(但不适用于SQL Server 20051):
1当问题得到解答时,问题不明确是指SQL Server 2005.我在这里留下这个答案,因为我认为它仍然是相关的 .
这在SQL中非常快速且高效 . 假设你有表
Sample with 4 column a,b,c,d where a,b,d are int and c column is Varchar(50)
.因此,您无法使用以下查询插入此表中的多个记录,而无需重复插入语句,
也用C#使用
SqlBulkCopy bulkcopy = new SqlBulkCopy(con)
您可以一次插入10行
这将实现您的要求:
对于未来的开发人员,您还可以 insert from another table :
甚至 from multiple tables :