SQL Server의 BULK INSERT
작업으로 데이터 가져 오기를 수 백 번했지만이 번에 익숙하지 않은 오류가 발생하고 문제 해결을 시도했습니다. Google에 아무 소용이 없습니다. (가) 아래 내가 새로운 행이 줄 바꿈 문자로 표시됩니다 쉼표 deliminated 파일을 사용하는 코드이다 : 그것은 지속적으로 아직 현재 날짜와 속도와 간단한 파일에, 작동일괄 삽입 실패 "대량로드 데이터 변환 오류 (잘림)"
BULK INSERT MyTable
FROM 'C:\myflatfile.txt'
WITH (
FIELDTERMINATOR = ','
,ROWTERMINATOR = '/n')
GO
, 그것은에 실패한 것 오류 "메시지 4863, 수준 16, 상태 1, 줄 1 행 1, 열 2 (ColumnTwo)에 대한 대량로드 데이터 변환 오류 (잘림)." 파일을 보면이 오류가 발생하지 않는 이유는 알 수 없습니다 (대개 Google의 문제 해결은 구분 기호가 여러 줄로 여러 번 나타날 수 있음을 나타내므로이 오류가 발생합니다). 파일에서, 여기 처음 10 선입니다 (그것이 첫 번째 줄에 실패 참고) :
1961-01-01,8.2
1961-02-01,8.2
1961-03-01,7.4
1961-04-01,7.6
1961-05-01,7.8
1961-06-01,8.5
1961-07-01,9.1
1961-08-01,8.8
1961-09-01,8.4
1961-10-01,8.8
표를 thare이 VARCHAR(50)
두 개의 필드가 있습니다에 나는 심지어 내가 처음봤을 때 불구하고, 이러한 데이터를 삽입하는거야 잘라내기를 사용하여 데이터 필드를 VARCHAR(2000)
으로 확장했는데 영향을 미치지 않았습니다.
CREATE TABLE MyTable (
ColumnOne VARCHAR(50),
ColumnTwo VARCHAR(50)
)
나는 또한 그 (나는이 같은 코드를 사용하여 대시 데이터 가져 오기 많이 해봤하고 오류없이 작동하더라도) 일을 망치는 경우 모두 볼 수 있도록 대시를 제거했는데, 그것은 여전히 받아 동일한 오류 메시지.
SSIS와 마찬가지로 직접 가져 오기 (Tasks
통해)가 작동하지만이 코드는 정확히 똑같은 작업을 수행해야하므로 실패합니다.
감사합니다. 새 줄 문자 인 것처럼 파일이 '/ n'또는 '0x0a'인지 구분할 수 있습니까? 나는 이것 전에 이것을 보지 못했다. – Tim
파일이 UNIX 기반 시스템 인 경우 '0x0a'를 사용해야합니다 (UNIX는 \ n - 라인 피드를 종결 자로 만 사용하기 때문에). 파일이 Windows 기반 일 경우 벌크 카피는 \ n \ (캐리지 리턴과 줄 바꿈 모두) 만 지정하더라도 실제로 \ r \ n을 사용합니다. – EkoostikMartin