Excel에서 SQL Server로 데이터 가져오기 중 일부 데이터 가져오기 실패
데이터 가져오기 및 내보내기 도구를 사용하여 Excel에서 SQL Server로 데이터를 가져오는 동안 이상한 일이 발생했습니다.
요점은 엑셀로 데이터를 볼 수 있지만, 모든 데이터가 Import되지 않는다는 것입니다.
스프레드시트 하나가 포함된 Excel 워크북이 있습니다.저는 열에 있는 데이터를 볼 수 있고 모든 것이 좋아 보입니다.가져오기 마법사를 사용하여 데이터를 가져올 때 열과 미리 보기 데이터를 볼 수 있지만 가져오기가 실행될 때 데이터가 모두 전송되지는 않습니다.오류는 없고 가져오기 프로세스는 완료됩니다. 테이블에 null 값을 여러 개 삽입하기만 하면 됩니다.
숫자에서 가장 많이 발생하는 것으로 보입니다. 예를 들어 이름, 성 및 ID 번호에 대한 열이 세 개 있다고 가정해 보겠습니다.제가 이름과 성, 그리고 신분증 번호를 모두 받을게요.무슨 일이 일어나고 있는지 패턴을 찾을 수가 없습니다.
이전에 이런 일이 한 번 있었는데 가져오기 프로세스 중에 선택할 수 있는 스프레드시트가 두 개 있다는 것을 알게 되었습니다.데이터 가져오기 및 데이터 가져오기$ - 첫 번째 항목은 위에서 설명한 대로 실패하고 두 번째 항목은 완벽하게 가져옵니다.이번에는 선택할 스프레드시트가 하나뿐입니다.
64비트 시스템에서 주로 XLS 문서와 32비트 가져오기 마법사를 사용하고 있지만, 무엇이든 시도할 용의가 있습니다.
스프레드시트가 두 개인 이유(가끔)와 가져오기가 실패하는 이유에 대한 아이디어가 있습니까?
데이브
질문에 대한 대답은 데이터가 Excel에 저장되는 방법을 포함할 수 있습니다.
저도 방금 같은 문제에 부딪혔어요.숫자와 숫자의 두 가지 유형의 값이 들어 있는 열이 있었습니다. (예: 51000 및 2009-00949) NVARCHAR 또는 VARCHAR로 가져와야 했지만 SQL 가져오기 마법사(SQL 2005)에서는 숫자만 가져오고 숫자는 대시를 사용하거나 숫자를 사용하지 않습니다.첫 번째 레코드에 어떤 유형이 있었는지에 따라 다릅니다.가져오지 않은 값은 필드에 'null' 값이 있으므로 레코드를 사용할 수 없습니다.
포맷|을 사용해 보았습니다.Excel의 셀 메뉴 옵션(숫자, 텍스트, 일반 등)과 SQL의 다양한 매핑 옵션(nvar, nvarchar, varchar, sqlvariant, float)이 성공하지 못했습니다.
솔루션은 데이터를 사용하는 것이었습니다.숫자 값을 텍스트로 저장하는 셀 형식 지정 옵션이 아닌 Excel의 텍스트 열 옵션입니다.숫자 값(예: 51000)을 텍스트 값으로 저장된 숫자로 변환(왼쪽 상단 모서리에 작은 녹색 삼각형 오류가 나타남)한 열에 사용했을 때 대시가 있는 숫자는 텍스트로 남아 있었습니다.약간의 녹색 삼각형 오류와 함께 데이터를 이 형식으로 남겨야 했습니다. 그렇지 않으면 SQL로 가져올 수 없습니다.열의 데이터가 이 형식으로 저장되면 두 가지 유형의 열 데이터(대시가 있는 숫자 및 숫자)가 다른 레코드 데이터와 함께 올바르게 가져와 열에 null 값이 없습니다.
제 문제는 제가 가져오는 파일이 오래되고 다소 악의적인 엑셀 파일이라는 것이었습니다.나는 파일을 열어 파일을 .xlsx로 저장했고 그 후 null 데이터 없이 파일을 성공적으로 가져왔습니다.
텍스트 데이터가 맨 위에 오도록 데이터를 정렬하여 문제를 해결할 수 있었습니다.SQL Server는 숫자 데이터가 아니라 텍스트 데이터라는 것을 알게 되었습니다.
정확히 같은 문제에 직면했습니다. .xlsx 파일을 사용하여 문제를 해결했습니다.
가져오기 마법사를 사용하고 있지 않습니까?을 Edit Mappings
마법사의 "소스 테이블 및 보기 선택" 페이지에서 각 소스 열에 대한 유형, Nullable 및 크기 열을 선택합니다.뭔가가 제대로 매핑되지 않는 것처럼 들립니다.
아마도 SQL Server가 나머지 데이터를 무시하게 만드는 빈 행일 것입니다.하지만 엑셀 파일의 스키마와 처음 5개 행을 공유해 주시겠습니까?정확한 세 개의 기록과 다음 두 개의 기록.
해당 열의 모든 행을 선택하고 유형을 Excel에서 텍스트로 변경한 다음 전체 열을 선택하고 유형을 텍스트로 변경합니다.
저도 그 문제를 겪고 있습니다.이 문제를 해결할 수 있는 유일한 방법은 .xlsx 파일을 .csv 파일로 저장한 다음 .csv 파일을 SQL 서버 "데이터 가져오기"에 사용하는 것이었습니다.
Microsoft Excel과 Microsoft SQL Server 간의 통합이 더 깨끗해질 것으로 보입니다.
제 버전은 Excel 2013. SQL Server 2012입니다.
마지막으로 셀을 일반으로 포맷하는 것은 숫자 값이 있는 곳에서 작동했습니다. 이전에는 %s을 표시했지만 지금은 해결되었습니다.
SSMS의 가져오기 도구는 열의 데이터 유형과 다른 특성을 결정하기 위해 첫 번째 'x' 행의 샘플을 가져오는 것으로 보입니다. 따라서 두 배를 선택하면 텍스트 값이 null로 간주되고 텍스트로 읽히면 숫자가 표시되지 않습니다.Microsoft Access를 사용하는 경우 먼저 자신의 열 유형을 선택하여 액세스 파일로 저장할 수 있는 액세스 가져오기를 사용할 수 있습니다. 그런 다음 SQL 서버와 'voila'에 대한 액세스 권한을 가져올 수 있습니다. (적어도 저에게는) 작동합니다. 누군가에게 도움이 되었으면 합니다.
기존 테이블에 데이터를 업로드하고 있었습니다.기존 테이블을 스크립팅하여 가져온 열이 기존 열과 일치하는지 확인했습니다.내 열 중 하나가 일치하지 않고 데이터 세트를 부분적으로만 가져온 것으로 나타났습니다.
언급URL : https://stackoverflow.com/questions/15884934/data-import-from-excel-to-sql-server-failing-to-import-all-data
'programing' 카테고리의 다른 글
양식 데이터를 JSON으로 직렬화 (0) | 2023.06.20 |
---|---|
Python 사전에서 URL 매개 변수 (0) | 2023.06.20 |
Python에서 파일이 열려 있는지 확인합니다. (0) | 2023.06.20 |
Visual Studio 2012의 웹 사이트 관리 도구 위치 (0) | 2023.06.20 |
c#에서 iCal 파일 만들기 (0) | 2023.06.20 |