your programing

각 열에 대해 varchar(MAX)가 사용되고 있음에도 불구하고 CSV 파일을 가져오는 동안 SQL Server에서 오류가 발생

lovepro 2023. 5. 22. 22:53
반응형

각 열에 대해 varchar(MAX)가 사용되고 있음에도 불구하고 CSV 파일을 가져오는 동안 SQL Server에서 오류가 발생

CSV 파일 기가바이트)을 대용량여을파에일합삽(니다고기트이바려가하입)에 삽입하려고 SQL Server하지만 일단 내가 통과하면,Import Wizard그리고 마지막으로 파일을 가져오려고 시도합니다. 다음 오류 보고서가 표시됩니다.

  • (오류) 메시지 실행 중

오류 0xc02020a1: 데이터 흐름 작업 1: 데이터 변환에 실패했습니다.열 "제목"에 대한 데이터 변환에서 상태 값 4와 상태 텍스트 "텍스트가 잘렸거나 대상 코드 페이지에서 하나 이상의 문자가 일치하지 않습니다."를 반환했습니다.

(SQL Server Import and Export Wizard)

오류 0xc020902a: 데이터 흐름 작업 1: "소스 - Train_csv.출력 [플랫 파일 소스 출력].열["제목 "]"이(가) 잘리고 "Source - Train_csv"의 잘린 행 처리 때문에 실패했습니다.출력 [플랫 파일 소스 출력].열["제목 "]"은 잘라내기 실패를 지정합니다.지정한 구성 요소의 지정한 개체에서 잘라내기 오류가 발생했습니다.

(SQL Server Import and Export Wizard)

오류 0xc0202092: 데이터 흐름 작업 1: 파일 "C:" 파일을 처리하는 동안 오류가 발생했습니다.\Train.csv"가 데이터 행 2에 있습니다.

(SQL Server Import and Export Wizard)

오류 0xc0047038: 데이터 흐름 작업 1: SSIS 오류 코드 DTS_E_PRIMEOUTPUT에 실패했습니다.소스의 PrimeOutput 메서드 - Train_csv에서 오류 코드 0xC0202092를 반환했습니다.파이프라인 엔진에서 PrimeOutput()이라는 오류 코드를 반환했습니다.오류 코드의 의미는 구성 요소에 의해 정의되지만 오류는 치명적이며 파이프라인 실행이 중지되었습니다.이 전에 오류에 대한 자세한 정보와 함께 오류 메시지가 게시될 수 있습니다.

(SQL Server Import and Export Wizard)

먼저 파일을 삽입하기 위해 테이블을 만들고 각 열에 varchar(MAX)를 고정하도록 설정했는데, 이 절단 문제가 어떻게 계속 발생할 수 있는지 이해할 수 없습니다.내가 뭘 잘못하고 있는 거지?

서버및내마법원서에본데조다수있습니정할유에서 원본 할 수 .Advanced탭(새 테이블을 만들 경우 출력의 데이터 유형이 되지만, 그렇지 않으면 원본 데이터를 처리하는 데만 사용됩니다.)

유형은 MS 의 데이터 유형과 .VARCHAR(255)건그입니다…DT_STR의 폭은 " " " " " " " " " " " " " 으로 할 수 .255.위해서VARCHAR(MAX)건그입니다…DT_TEXT.

Advanced탭, 문제가 되는 열의 데이터 유형 변경DT_STR로.DT_TEXT(여러 열을 선택하여 한 번에 모두 변경할 수 있습니다.)

가져오기 및 내보내기 마법사 - 데이터 원본 - 고급

이 답변은 일반적으로 적용되지 않을 수 있지만 작은 텍스트 파일을 가져올 때 발생한 오류를 수정했습니다.플랫 파일 공급자가 원본의 고정된 50자 텍스트 열을 기준으로 가져오지만 올바르지 않습니다.대상 열을 재매핑해도 문제에 영향을 미치지 않습니다.

이 문제를 해결하려면 플랫 파일 공급자의 "데이터 원본 선택"에서 파일을 선택한 후 "제안 유형"을 선택합니다.버튼이 입력 열 목록 아래에 나타납니다.이 버튼을 누른 후 사용 중인 대화 상자가 변경되지 않았더라도 플랫 파일 공급자는 원본 .csv 파일을 다시 쿼리한 다음 원본 파일의 필드 길이를 올바르게 결정했습니다.

일단 이 작업이 완료되면 더 이상의 문제 없이 수입이 진행되었습니다.

버그인 것 같습니다. 해결 방법을 적용한 다음 다시 시도하십시오. http://support.microsoft.com/kb/281517 .

또한 고급 탭으로 이동하여 대상 열 길이가 Varchar(최대)인지 확인합니다.

Advanced Editor(고급 편집기)에서 문제를 해결하지 못했습니다. 대신 메모장(또는 즐겨찾기 텍스트/xml 편집기)을 통해 dtsx-file을 편집하고 속성의 값을 수동으로 바꾸어야 했습니다.

length="0" dataType="nText"(유니코드를 사용하고 있습니다)

텍스트/xml 모드에서 편집하기 전에 항상 dtsx 파일을 백업하십시오.

SQL Server 2008 R2 실행

고급 탭으로 이동 ----> 열의 데이터 유형 ---> 여기서 데이터 유형을 DT_STR에서 DT_TEXT로 변경하고 열 너비는 255입니다.이제 완벽하게 작동하는지 확인할 수 있습니다.

문제: Jet OLE DB 공급자가 레지스트리 키를 읽어 소스 열의 유형을 추측하기 위해 읽을 행 수를 결정합니다.기본적으로 이 키의 값은 8입니다.따라서 공급자는 원본 데이터의 처음 8개 행을 검색하여 열의 데이터 유형을 확인합니다.텍스트처럼 보이는 필드가 있고 데이터 길이가 255자를 초과하는 경우 열은 메모 필드로 입력됩니다.따라서 소스의 처음 8개 행에 255자를 초과하는 데이터가 없으면 Jet은 데이터 유형의 특성을 정확하게 확인할 수 없습니다.내보낸 시트의 데이터의 처음 8행 길이가 255보다 작기 때문에 소스 길이를 VARCHAR(255)로 간주하고 더 긴 열에서 데이터를 읽을 수 없습니다.

수정: 해결책은 주석 열을 내림차순으로 정렬하는 것입니다.2012년 이후에는 가져오기 마법사의 고급 탭에서 값을 업데이트할 수 있습니다.

언급URL : https://stackoverflow.com/questions/18600040/errors-in-sql-server-while-importing-csv-file-despite-varcharmax-being-used-fo

반응형