몇년전에 핸드폰 메모장에 적어놨던 것을 우연하게 찾아서 포스팅 함
운영업무를 하다보면 현업에서 엑셀파일을 던져주며 일괄로 등록해 달라고 요청할때가 있다.
이때 대략 두가지 방법 중 하나룰 선택하여 밀어넣게 되는데
하나는 엑셀데이터가 방대할때 SQL에서 제공하는 벌크카피를 이용하는 것이고
두번째 방법은 적당한 10 ~ 수백건 정도는 엑셀파일에 함수 수식을 붙여 쿼리문을 만드는
방법을 택할 수 있다.
이 중 두번째 방법에 대해 설명한다.
1. 이런 데이터를 받았다고 가정한다.
진짜 넣어야 할 데이터는 A2 부터 B2 , C2, D2가 라고 즉 2번째 행에서 A~D 까지 라 가정한다
2., 밀어넣을 엑셀데이터를 모두 선택한 후 "텍스트" 데이터로 만든다
이유는 숫자가 들어간 데이터는 0이 자동으로 제거 될 수 있기 때문이다. -> 핸드폰번호 010이 10이 되는 문제 발생
3. SSMS든 메모장에서 예상 쿼리문을 작성한다. 단 VALUES 는 모두 '' 값으로 한다
INSERT INTO DOG (Name, Address, Zipcode, Tel) VALUES ('', '', '', '');
4. 위 쿼리문을 셀과 "" 와 & 를 통해 꾸민다.
예시에서는 A2 부터 D2 까지가 VALUES 의 값이 된다.
"&A2&" 라는 문자열을 만든 후
VALUES ('') 사이에 하나씩 복사해서 붙여넣고 A2 다음것을 B2 , C2, D2 로 바꾼다
INSERT INTO DOG (Name, Address, Zipcode, Tel) VALUES ('"&A2&"', '"&B2&"', '"&C2&"', '"&D2&"');
5. =CONCATENATE("") 라고 적은 후 바로 위 만들어놓은 쿼리 템플릿을 "" 사이에 붙여 넣는다.
=CONCATENATE("INSERT INTO DOG (Name, Address, Zipcode, Tel) VALUES ('"&A2&"', '"&B2&"', '"&C2&"', '"&D2&"');")
6. 위 =CONCATE("INSERT....") 엑셀 함수를 복사하여 적절한 빈 2번째행을 선택 후
상단에 함수 블럭에 붙여 넣고 엔터를 친다.
정상적으로 함수가 만들어 졌다면 A2부터 D2까지의 셀 값들이 VALUES 이후에 적용되 있다.
7. + 표시가 나오면 행을 데이터가 있는 행 까지 드래그하면 끝난다
'DB > SQLServer' 카테고리의 다른 글
테이블 및 컬럼 설명 추가/수정/조회/삭제 통합 (1) | 2024.10.19 |
---|---|
Merge 문을 통해 단일 테이블 Insert/Update/Delete 프로시저 생성 (0) | 2024.09.24 |
프로시저에 TRY/CATCH 와 트랜잭션 (0) | 2024.09.04 |
Poor Man's T-SQL Formatter SSMS 쿼리 들여쓰기 정리 (1) | 2024.08.29 |
비트 연산 (0) | 2021.05.28 |