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.
Создайте CSV-файл (или некоторый файл с определенным разделителем полей и разделителем строк) и используйте опцию «BULK INSERT» для загрузки файла в базу данных. Файл может иметь 100000 строк; не будет никаких проблем с загрузкой огромного файла с помощью массовой загрузки.
Другим решением является использование запроса выбора с объединениями.
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
.
INSERT mytable (col1, col2, col3, col4, col5, col6)
SELECT * FROM (VALUES
('1502577', '0', '114', 'chodba', 'Praha', 'Praha 1'),
('1503483', '0', 'TVP', 'chodba', 'Praha', 'Praha 2'),
/* ... more than 1000 rows ... */
('1608107', '0', '8', 'sklad', 'Tlumačov', 'Tlumačov'),
('1608107', '0', '9', 'sklad', 'Tlumačov', 'Tlumačov')
) AS temp (col1, col2, col3, col4, col5, col6);