텍스트가 잘리거나 하나 이상의 문자가 대상 코드 페이지에 일치하지 않음 Excel 파일에서 가져올 때
나는 네 개의 텍스트 열이 있는 엑셀 파일을 가지고 있습니다. 그 중 하나는 값이 가장 긴 ShortDescription이라고 합니다.SQL Server 2008 데이터베이스에 4개의 열이 있는 테이블을 생성했으며 ShortDescription 열 유형이 NvarChar(Max)로 설정되었습니다.
그러나 SSIS 가져오기 및 내보내기 대화 상자를 사용할 때 OnTruncation 옵션을 Ignore로 설정해도 제목에 언급된 오류가 계속 표시됩니다.
열 데이터를 지우려고 했는데 성공했습니다(그래서 문제가 짧은 설명 열에 있는지 확인했습니다).저는 전체 데이터를 다른 우수한 워크북에 복사하려고 했지만 여전히 실패했습니다.
어떤 아이디어라도 ?
SSIS 대화 상자에서 Excel 소스를 사용하여 가져오려고 하는 것 같습니다.
그렇다면 문제는 SSIS가 Excel 소스를 만들 때 스프레드시트 시작 부분에서 일부 행을 샘플링하는 것입니다.[ShortDescription](짧은 설명) 열에 너무 큰 내용이 표시되지 않으면 기본적으로 255자 텍스트 열이 표시됩니다.
따라서 잘리지 않고 데이터 양이 많은 행이 포함된 열에서 데이터를 가져오려면 다음 두 가지 옵션이 있습니다.
- 샘플링된 행 중 하나 이상의 [ShortDescription] 열에 255자보다 긴 값이 포함되어 있는지 확인해야 합니다.이렇게 하는 한 가지 방법은 REPT() 기능을 사용하는 것입니다(예: = REPT('z', 4000). 이 기능은 문자 'z'의 문자열 4000을 생성합니다.
- 이러한 행을 포함하려면 Jet Excel 드라이버에서 샘플링한 행 수를 늘려야 합니다.TypeGuesRows 에서 된 행 수 .
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
(에는 (으)로 표시됨)HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel
키 레지스트리 키.
자세한 내용은 다음 두 링크에서 확인할 수 있습니다.
- http://waxtadpole.wordpress.com/2008/04/28/hello-world/
- http://technet.microsoft.com/en-us/library/ms141683.aspx
자세한 내용을 설명하기 위해 SSIS는 마법사 뒤에 Excel 데이터 원본 개체, SQL 테이블 대상 개체 및 이들 사이에 데이터 흐름 연산자 등 3개의 개체를 만듭니다.Excel 원본 개체는 원본 데이터를 정의하며 다른 두 개체와 독립적으로 존재합니다.그래서 생성되면 제가 설명한 샘플링이 완료되고 소스 컬럼 크기가 설정됩니다.따라서 데이터 흐름 연산자가 실행하고 엑셀에서 데이터를 꺼내어 테이블에 넣으려고 할 때 이미 255자로 제한된 데이터 소스를 보고 있습니다.
구분된 플랫 파일에서 SQL Server로 가져올 때 이 문제가 발생했습니다.해결책은 (오류 메시지에서) 문제가 되는 열의 'OutputColumnWidth' 값을 업데이트하는 것이었습니다.가져오기 마법사의 '데이터 원본 선택' 양식에서 내 소스는 플랫 파일이었습니다.맨 왼쪽 창에서 '고급'을 선택합니다.그런 다음 개별 열의 속성을 설정할 수 있습니다.제 경우 대부분의 열에 대한 '출력 열 너비'가 기본값으로 '50'으로 설정되었습니다.저는 단순히 플랫 파일의 값을 자르지 않는 더 큰 값으로 업데이트했습니다.
가져오기할 파일을 편집하고 첫 번째 위치에 새 행을 만드는 간단한 방법입니다.그렇게 하면 항상 샘플이 추출됩니다.그런 다음 255자를 초과할 수 있는 열은 셀에 255자만 추가하면 작동합니다.가져온 후에는 추가한 정크 행을 삭제하기만 하면 됩니다.
일부 한자와 잘못된(큰) 문자열이 포함된 큰 파일을 가져오려고 할 때 이 오류가 발생했습니다.
텍스트 파일이 UTF8 형식으로 저장되었습니다.
내 설정:
일반 옵션(아무 것도 변경하지 않음):
- Locale: English (United States)
- Unicode: Unchecked
- Code Page: 65001 (UTF-8)
왼쪽에 고급 옵션이 있습니다.
- DataType (for column): Unicode String [DT_WSTR] (changed)
- OutputColumnWidth: 4000 (that's the maximum) (changed)
데이터 유형 매핑 검토
- On Error: Ignore
- On Truncation: Ignore
목표 열의 너비는 = 50입니다.
이 설정에는 오류가 없습니다.
이 문제를 해결하려면 레지스트리 구성 요소의 대체 위치를 변경해야 합니다.
에서 찾을 수 없는 경우
시작 –>RUN –>RegEdit –>HKEY_LOCAL_MACHINE\소프트웨어\Microsoft\제트\4.0\엔진\엑셀
그럼 들여다 보세요.
시작 –>RUN –>RegEdit –>HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Jet -> 4.0 -> 엔진 -> Excel
이 링크가 도움이 되었습니다. https://support.microsoft.com/en-us/kb/189897
- 셀 값이 255자 이상인 행을 엑셀의 시작 부분에 복사하고, 해당 행을 엑셀의 첫 번째 행으로 만듭니다.
- 위 링크에서 레지스트리 값을 변경합니다.
사용해 보십시오 - 데이터 흐름 작업으로 이동 > Excel 데이터 원본 마우스 오른쪽 버튼 클릭 > 고급 편집기 표시 > 입력 및 출력 속성 선택 > Excel 원본 출력 확장 > 외부 열 및 출력 열을 확장하고 잘못된 열을 확인한 후 해당 열 머리글을 클릭하고 데이터 유형을 적절히 업데이트하십시오(대부분 업데이트해야 함) 유니코드 텍스트 스트림 [DT_NTEXT], 그렇지 않으면 여기로 변경하여 시도해 보십시오.도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/8629024/text-was-truncated-or-one-or-more-characters-had-no-match-in-the-target-code-pag
'source' 카테고리의 다른 글
한 변수를 일정하게 유지하고 다른 변수는 excel의 행과 함께 변경하는 방법 (0) | 2023.05.11 |
---|---|
뷰 모델에서 창 닫기 (0) | 2023.05.11 |
데이터 클래스에 기본 목록 인수 전달 (0) | 2023.05.11 |
내부에 다른 디렉터리를 만드는 대신 'cp'가 디렉터리를 덮어쓰도록 강제하는 방법은 무엇입니까? (0) | 2023.05.11 |
노드 설치 방법.Amazon Linux의 JS (0) | 2023.05.11 |