2011-10-12 11 views
15
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........................ 

Tengo 100000 filas como esta pero mis instrucciones de inserción son más grandes que 1000 filas. Cuando ejecuto sql en SSMS, me da un error: "El número de expresiones de valor de fila en la instrucción INSERT excede el número máximo permitido de 1000 valores de fila".¿Cómo puedo insertar 100000 filas en MSSQL?

Respuesta

15

Cree un archivo csv (o un archivo con delimitador de campo definido y delimitador de fila) y utilice la opción "BULK INSERT" para cargar el archivo en la base de datos. El archivo puede tener 100000 filas; no habrá ningún problema al cargar archivos de gran tamaño mediante la carga masiva.

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

+0

+1 Desde el código, puede usar la clase [SqlBulkCopy] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx) – Andomar

+0

Tengo un archivo sql viene de mysl con exportación ... – mekar10

+0

Entonces supongo; será fácil convertirlo a un archivo csv. – Bala

8

Otra solución es utilizar una consulta de selección con los sindicatos.

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 se utiliza en lugar de UNION con el fin de agilizar la consulta cuando se trata de miles de registros. UNION ALL permite filas duplicadas mientras que UNION asegurará que los duplicados no existan en el conjunto de resultados. Para este escenario, no queremos eliminar ningún posible duplicado, por lo que se usa UNION ALL.

0

Mediante la aplicación de la siguiente que no debería tener algún error:

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') 

........... 

lo intenté y funcionó, por supuesto, se puede utilizar el Excel para concatenar los valores fácilmente.

Cuestiones relacionadas