Excel Data 로딩 시 Null로 처리되는 문제 

 

한대성

  

   

Excel 파일의 데이터를 테이블로 입력하는 경우에 대해 살펴봅시다.

 

 

Case

Excel File

 

Table

Case 1

 

Case 2

 

 

Case 3

 

 

Excel 데이터를 로드할 경우, Excel ISAM 드라이브에서 처음 몇 개의 행을 읽어서 데이터의 유형을 결정하게 됩니다이 때데이터 유형은 텍스트 형(nvarchar)이거나 숫자 형(Float)형 둘 중의 하나로 결정됩니다Case 2의 경우, ISAM 드라이브에서 몇 개의 행을 읽어본 후 파악한 결과데이터는 숫자 형으로 판단했기 때문에 “‘0313”으로 입력된 세 번째 행의 데이터는 문자 데이터로 간주해서 Null로 처리됩니다.Case 3의 경우 “’0313”으로 입력된 데이터를 보고자형 데이터라 판단했기 때문에 “3209”와 같은 숫자 형 데이터를 Null로 처리하게 됩니다.

 

이러한 현상은 Excel Data를 연결할 때의 연결 문자열과 상관 있습니다기본적으로 Excel 파일의 연결 문자열은 다음과 같이 IMEX에 대한 속성이 생략된 형태입니다.

 

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Code.xls;Extended Properties="EXCEL 8.0;HDR=YES;";

 

IMEX 속성은 Excel 파일이 데이터 출력(Export)용인지 데이터 입력(Import)용인지를 설정하는 속성으로생략하면 0, , Export모드로 인식하여 위와 같은 현상이 발생합니다.

 

Case 2Case 3과 같이 텍스트 형태와 숫자 형태가 섞여 있는(셀의 속성과는 상관없이) Excel 데이터를 로딩할 경우에는 다음과 같이 연결 문자열에 IMEX=1이라는 값을 추가하면 됩니다.



 출처(SQLLeader.com) 에서 퍼왔어요. ^^


저작자 표시 비영리 동일 조건 변경 허락
신고
by 언더바 2015.11.17 09:26
| 1 2 3 4 5 ... 170 |

티스토리 툴바