2012-12-13 4 views
1

여기에 대량으로 내 SQL은 CSV는 SQL 서버 2008에 파일을로드하지만, 그것의 반환의 이 (맨 윗줄은 무시됩니다)대량 삽입이 SQL 서버에서 작동하지 않습니다 2008

24544,"1970-01-01 10:00:00","8056060 kWh" 
24544,"2012-12-04 00:15:00",0.176 
24544,"2012-12-04 00:30:00",0.163 
24544,"2012-12-04 00:45:00",0.016 
+0

그리고 삽입하려는 'EnergyData'의 테이블 구조는 무엇입니까? –

답변

0

대량 삽입은 데이터에서 따옴표를 제거하지 않으며 파일을 변경해야합니다 가져 오거나 모든 열이 문자 필드 인 테이블로 가져오고 쿼리에서 따옴표를 제거하고 데이터 유형을 변환합니다.

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

그것은 상태 : 난 그냥 다음 MSDN 문서를 발견했습니다

쉼표로 구분 된 값 (CSV) 파일이 SQL 서버 대량 가져 오기 작업을 지원하지 않습니다.

그런 다음 계속 진행될 상황에 대한 몇 가지 예를 계속합니다.

0

이 질문은 다소 오래되었지만 문제를 검색했을 때 나타 났으므로 내 솔루션을 제공 할 것이라고 생각했습니다.

필자의 경우 올바른 테이블에 삽입하지 않는 것이 실수 였기 때문에 삽입하려는 테이블을 확인해야합니다. 그래도 무슨 일이 벌어 졌는지 알아 내려고 할 때 벌크 삽입 프로세스에서 올바른 방향으로 인도 할 수있는 오류 파일을 만들 수 있음을 발견했습니다. 이렇게하려면 ERRORFILE ='E:\Error.txt'과 같은 것을 사용할 수 있습니다. 이 오류는 Error.txt라는 파일에 수신되는 오류를 출력해야합니다. 아래에 전체 예제를 제공했습니다.

BEGIN TRANSACTION 
BEGIN TRY 
BULK INSERT [Table Name] 
FROM 'E:\FileName.csv' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', ERRORFILE ='E:\Error.txt') 
COMMIT TRANSACTION 
END TRY 
BEGIN CATCH 
ROLLBACK TRANSACTION 
END CATCH 

트랜잭션에 대량 삽입 프로세스를 래핑했습니다. 이것은 대량 삽입 중에 문제가 발생하면 모든 것을 롤백 할 것이므로 부분적으로 데이터 가져 오기를 얻지 못할 것입니다.

관련 문제