Как я могу вставить 100000 строк в MSSQL?
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........................
У меня есть 100000 строк, как это, но мои вставки более 1000 строк. Когда ı запускает sql в SSMS, это дает мне ошибку: "Число выражений значений строки в инструкции INSERT превышает максимально допустимое число 1000 значений строк".
Ответы
Ответ 1
Создайте файл csv (или некоторый файл с определенным разделителем полей и разделителем строк) и используйте опцию "BULK INSERT" для загрузки файла в базу данных. Файл может содержать 100000 строк; не будет никакой проблемы загрузки огромного файла с помощью массовой загрузки.
http://msdn.microsoft.com/en-us/library/ms188365.aspx
Ответ 2
Другим решением является использование запроса select с объединениями.
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....
UNION ALL
используется вместо UNION
, чтобы ускорить запрос при работе с тысячами записей. UNION ALL
допускает дублирование строк, тогда как UNION
гарантирует, что дубликаты не существуют в наборе результатов. Для этого сценария мы не хотим удалять возможные дубликаты, поэтому используется UNION ALL
.
Ответ 3
Применяя следующее, вы не должны иметь никаких ошибок:
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')
...........
Я попробовал, и это сработало, конечно, вы можете использовать excel, чтобы легко конкатенировать значения.