SQL Server Management Studio 를 활용해 다량의 엑셀 데이터를 테이블에 insert 해보자.
1. 테이블 생성
CREATE TABLE EXCEL_UPLOAD ( emp_no varchar(10), emp_name varchar(100), hire_date date, dept_code varchar(10), position varchar(30), salary int )
테스트를 위해 테이블을 생성한다.
emp_no | emp_name | hire_date | dept_code | position | salary |
E001 | Alice | 2023-01-10 | D01 | Manager | 80000 |
E002 | Bob | 2022-11-05 | D02 | Analyst | 60000 |
E003 | Charlie | 2021-05-15 | D01 | Developer | 75000 |
E004 | David | 2020-12-22 | D03 | Clerk | 50000 |
E005 | Eva | 2023-06-30 | D02 | Manager | 85000 |
그리고 테이블에 넣을 테이블을 엑셀로 만든다.
2. 데이터 가져오기
현재 master 데이터베이스에 테이블이 생성되어있다.
데이터베이스에서 마우스 우클릭 - 태스크 - 데이터 가져오기를 선택한다.
가져오기 마법사에서 다음을 선택한다.
데이터 원본에 엑셀을 선택 후 엑셀 파일의 경로를 넣는다.
아래 사진과 같이 엑셀의 첫 행을 컬럼 명을 사용했기 때문에 ‘첫 행은 열 이름으로’를 체크한다.
그 다음으로 복사할 대상을 선택한다. SQL SERVER 를 선택 후 인증방법과 데이터베이스를 선택한다.
하나 이상의 테이블 또는 뷰에서 데이터 복사 선택한다.
대상 테이블명은 생성한 테이블명에 맞게 수정한다. 만약 이름이 다르다면 새로운 테이블이 생성되게 된다.
매핑 정보를 들어갔을 때 대상에 테이블명이 있다면 행을 추가하도록 설정되며, 테이블명이 일치하는게 없다면 새로운 테이블이 생성되게 된다.
다음을 선택한다.
즉시 실행을 선택한다.
실행이 완료되었다.
SELECT * FROM EXCEL_UPLOAD
쿼리를 실행했을 때 엑셀의 데이터가 정상적으로 테이블에 입력된 것을 확인할 수 있다.
3. 'Microsoft.ACE.OLEDB.12.0' 공급자는 로컬 컴퓨터에 등록할 수 없습니다. (System.Data)
데이터 원본 복사를 할 때 해당 오류가 발생할 수 있다.
이 오류는 64비트 Office 프로그램을 사용하고 있어 64비트 용 OLE DB 제공자가 설치되어있으나, 32비트 프로그램인 Visual Studio 에서는 해당 제공자를 찾을 수 없음을 의미한다.
따라서 위의 링크에서 32비트 엔진을 설치해야 한다.
cmd - cd downloads (accessdatabaseengine.exe) 가 설치되어있는 경로 - accessdatabaseengine.exe /passive 를 입력한다.
32버전이 설치가 되지 않는다.
이런 경우는 이미 64비트가 설치되어있기 때문에 설치가 되지 않는 것이다. 해결법은 공식 문서처럼 모든 엔진을 삭제 후 재설치 해야 한다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\FilesPaths
레지스트리 편집기에서 위의 경로로 이동한다.
경로에서 mso.dll 가 있다면 엔진을 삭제해주어야 한다.
제어판에서 office 를 삭제후 32비트를 설치 완료하면 된다.
그리고 다시 데이터 가져오기를 하면 다음으로 넘어가는 것을 확인할 수 있다.
Share article