2011-10-12 5 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........................ 

나는이 같은 100000 개의 행을 있지만 내 삽입 문을 1000 개보다 큰 행이 있습니다. SSMS에서 sql을 실행하면 "INSERT 문의 행 값 표현식 수가 최대 허용 된 행 값 1000 개를 초과합니다."라는 오류 메시지가 나타납니다.MSSQL에 100000 행을 삽입하려면 어떻게해야합니까?

답변

15

csv 파일 (또는 정의 된 필드 구분 기호와 행 구분 기호가있는 파일)을 만들고 "BULK INSERT"옵션을 사용하여 파일을 데이터베이스에로드하십시오. 파일은 100000 개의 행을 가질 수 있습니다. 일괄 업로드를 사용하여 거대한 파일을로드하는 데 문제가 없습니다.

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

+0

+1 코드에서 [SqlBulkCopy] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx) 클래스 – Andomar

+0

을 사용할 수 있습니다. SQL 파일이 있습니다. 수출로 mysl에서 오는 ... – mekar10

+0

그럼 내가 추측; csv 파일로 쉽게 변환 할 수 있습니다. – Bala

8

또 다른 해결책은 노조와 선택 쿼리를 사용하는 것입니다.

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이 사용됩니다. 당신이 오류가 없어야 다음을 적용하여

0

는 :

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

........... 

나는 그것을 시도하고 물론 당신은 쉽게 값을 연결하는 엑셀을 사용할 수했다.

관련 문제