본문 바로가기
DBMS

[mssql] Excel, csv 파일 쉽게 넣기_발생 가능한 오류도 정리

by code cleaner 2018. 6. 29.
반응형


데이터 분석하는 경우에는 파이썬으로 전처리를 하는 것도 좋지만 시간이 오래걸린다.

그래서 데이터 베이스에 넣어서 데이터 전처리를 하는 것이 편한 것 같다.

일반적인 변수 선택, 파생변수 생성해서 저장하는 것도 파이썬 pandas를 사용하는 것보다는 sql에서 직접하는 것이 효율적인것 같다.


그렇다면 우선 데이터를 넣고 분석하는 방법을 숙지하자!!


예시는 mssql


1. 선행과정


 mssql에 데이터를 넣기 위해서는 

1) 내 컴퓨터에 서버가 있거나 혹은 

2) 다른 사람과 공유하는 서버에 데이터베이스와 테이블 생성, 데이터 업로드의 권한을 갖고 있어야 한다.


나의 경우에는 이미 내 컴퓨터에 서버를 만들어 놓아서 해당 서버에 데이터를 넣을 예정이다.


2. 파일 변경


mssql에서는 csv 파일을 넣는 것을 지원하지 않는 것 같다. (방법 아시는 분은 댓글 남겨주세요)


1) csv 파일 => 엑셀 프로그램에서 엑셀 2016 버전 이하로 '*xls' 변경

2) excel 파일 => 2017 이상의 버전은 2016 이하 버전으로 변경 



3. mssql에 파일 넣기


1) 서버에 접속하기


2) 데이터넣을 '데이터 베이스' 만들기


접속한 서버에 데이터 베이스 우클릭 > 새 테이터베이스 클릭


데이터 베이스 이름 적기 > 하단 확인 클릭 >> 생성



데이터 베이스 클릭 > 새로고침(F5) 누르기 > 데이터 베이스 생성 확인하기 




3) 데이터 넣기


넣을 데이터 베이스 우클릭 > 태스크 클릭 > 데이터 가져오기 클릭 




데이터 원본 선택은 우리가 가져올 데이터가 엑셀이니까


데이터 원본 > msexcel 클릭

파일 경로 > 찾아보기 후 경로 찾아서 넣기

하단 다음 클릭





데이터를 복사해서 넣을 곳 찾기

나는 내가 mssql에서 만든 서버에 넣을 예정이므로 하단에서 sql server 찾음





서버 찾기 > 데이터베이스 명 확인 > 다음 클릭





모든 데이터를 넣을 생각임으로 별도로 쿼리를 작성해서 해당 데이터만 뽑지 않았다.


'하나 이상의 테이블 또는 뷰에서 데이터 복사' 설정 > 다음 클릭 






원본 데이블이랑 대상 테이블 확인하기

엑셀파일을 넣으면 원본 데이블에 '$'가 붙고, 대상테이블 명은 기본적으로 엑셀파일의 이름을 그래도 갖고 오기 때문에 수정했다.


대상 테이블 명칭 부분 '[dbo].['생성 테이블 명칭']'의 생성 테이블 명칭 클릭 > 수정 





위와 같은 화면에서 '매핑편집'을 누루면 각각의 데이터 유형/타입, Null 허용 등을 수정할 수 있다.


Sex와 Age를 'smallint'로 변경해보았다.


유형을 변경하면 오류가 날 수도 있지만, 변경이 필요한 이유는 서버의 용량 한계가 있기 때문에 불필요한 파일을 지우듯, 테이블에 불필요한 저장 공간을 줄이기 위해서다.





데이터 형식 매핑 검토


느낌표가 떠서 불안했지만 그냥 다음 선택

경우에 따라서는 느낌표 있어도 잘 들어갈 수도 있고, 오류 나는 경우도 있다.






즉시 실행 상태에서 다음클릭





테이블이 생성된다는 멘트가 나온다.

그냥 다음 클릭





들어오는 중 오류~

오류 메시지 확인하였더니 데이터 숫자 길이가 안 맞다고 한다





창을 닫고 다시 데이터베이스에서 생성된 테이블을 삭제해야 한다.

데이터는 오류가 나서 잘 안 들어가더라도 테이블이 생성되고, 같은 이름의 테이블을 새로 생성하면서 데이터를 넣을 수 없기 때문이다.


삭제 방법

1) 생성된 테이블 이름 우클릭 > 삭제

2) 쿼리 작성 'drop table [테이블명]'


매핑 편집 중에 두 field인 sex와 age 중에서 길이가 smallint를 초과했나보다

그냥 기본 float으로 다시 위의 과정 실시 

성공





데이터 테이블 생성 확인해보니 test가 있다. 



하지만 여기서 끝이 아니라 전체 데이터가 잘 들어갔는지 꼭 확인해 봐야 한다.


확인 방법 :전체 데이터 숫자 확인

쿼리 작성해서 확인


전체 데이터 숫자 확인 쿼리 예시


select count(passengerid)

from [타이타닉].[dbo].[test]



select count(Null이 아닌 아무 filed명이나 하나 쓰기)

from [데이터 테이블 경로]



418개 모두 잘 들온거 확인





끝~~~ 참 쉽죠잉~


자 그럼 데이터 넣다가 생길 수 있는 오류 정보 공유


1. 각 데이터 컬럼의 데이터가 기본 설정된 저장공간의 길이보다 초과될 수 있다. 

    해결방법 => 매핑 편집에서 길이 늘리거나 유형 변경

2. 넣으려는 데이터에 일부 다른 데이터들이 섞여 있다.

   이런 경우는 실무를 하다가 대게 외부에서 데이터를 받아올 때, 마지막에 '(0000)행 실행 완료'라는 내용이 포함되어 들어올 수 있다. 

당황하지 말고 그 부분 데이터 삭제 후 진행

 

그 외에는 다행스럽게도 오류 난게 없다.

오류 난 거 있으면 내용 공유 해주세요~ 같이 해결해가요





반응형