Как я могу вставить 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, чтобы легко конкатенировать значения.