如何在SQL Server中插入100000行?

mek*_*r10 26 sql sql-server sql-server-2008

INSERT INTO pantscolor_t (procode, color, pic) 
VALUES
('74251', 'Black', '511black.jpg'),
('74251', 'OD Green', '511odgreen.jpg'),
('74251', 'Black', '511black.jpg'),
('74251', 'OD Green', '511odgreen.jpg'),
('74251', 'Black', '511black.jpg'),
('74251', 'OD Green', '511odgreen.jpg'),
..........
..........
..........

INSERT INTO pantscolor_t (procode,color,pic)
VALUES
('74251', 'Charcoal', '511charcoal.jpg'),
('74251', 'Charcoal', '511charcoal.jpg'),
('74251', 'Charcoal', '511charcoal.jpg'),
('74251', 'Charcoal', '511charcoal.jpg'),
.............
.............
.............

 INSERT INTO........................
 INSERT INTO........................
 INSERT INTO........................
 INSERT INTO........................
Run Code Online (Sandbox Code Playgroud)

我有100000行像这样,但我的插入语句大于1000行.当我在SSMS中运行SQL语句时,出现错误:

INSERT语句中的行值表达式数超过了允许的最大1000行值.

小智 23

INSERT mytable (col1, col2, col3, col4, col5, col6)\nSELECT * FROM (VALUES\n('1502577', '0', '114', 'chodba', 'Praha', 'Praha 1'),\n('1503483', '0', 'TVP', 'chodba', 'Praha', 'Praha 2'),\n/* ... more than 1000 rows ... */\n('1608107', '0', '8', 'sklad', 'Tluma\xc4\x8dov', 'Tluma\xc4\x8dov'),\n('1608107', '0', '9', 'sklad', 'Tluma\xc4\x8dov', 'Tluma\xc4\x8dov')\n) AS temp (col1, col2, col3, col4, col5, col6);\n
Run Code Online (Sandbox Code Playgroud)\n


Ale*_*son 21

另一种解决方案是使用带有联合的选择查询.

INSERT INTO pantscolor_t (procode,color,pic)
SELECT '74251', 'Black', '511black.jpg'
UNION ALL SELECT '74251', 'OD Green', '511odgreen.jpg'
UNION ALL SELECT '74251', 'Black', '511black.jpg'
UNION ALL SELECT '74251', 'OD Green', '511odgreen.jpg'
UNION ALL SELECT '74251', 'Black', '511black.jpg'
UNION ALL SELECT '74251', 'OD Green', '511odgreen.jpg'
--etc....
Run Code Online (Sandbox Code Playgroud)

UNION ALL而不是UNION为了在处理数千条记录时加快查询速度.UNION ALL允许重复行,但UNION将确保结果集中不存在重复项.对于这种情况,我们不希望删除任何可能的重复项,因此UNION ALL使用.


Bal*_*ala 19

创建csv文件(或具有已定义的字段分隔符和行分隔符的某个文件)并使用"BULK INSERT"选项将文件加载到数据库.文件可以有100000行; 使用批量上传加载大文件不会有任何问题.

http://msdn.microsoft.com/en-us/library/ms188365.aspx


Sco*_*n99 7

通过应用以下内容,您应该不会有任何错误:

INSERT INTO pantscolor_t (procode,color,pic) VALUES ('74251','Black','511black.jpg')

INSERT INTO pantscolor_t (procode,color,pic) VALUES ('74251', 'OD Green', '511odgreen.jpg')

INSERT INTO pantscolor_t (procode,color,pic) VALUES ('74251', 'Black', '511black.jpg')

INSERT INTO pantscolor_t (procode,color,pic) VALUES ('74251', 'OD Green', '511odgreen.jpg')

INSERT INTO pantscolor_t (procode,color,pic) VALUES ('74251', 'Black', '511black.jpg')

...........
Run Code Online (Sandbox Code Playgroud)

我试过了,它奏效了,当然您可以使用 excel 轻松连接值。

  • 这将是一个相当缓慢的过程 (4认同)