SQL 조회 결과를 엑셀로 내보내는 방법은 크게 세 가지입니다. 일부 환경에서는은 결과창에서 복사해 붙여넣는 것만으로 끝납니다. 이 글은 데이터베이스를 처음 만져보는 분이 조회 결과를 엑셀 파일로 옮기고, 한글이 깨지거나 날짜가 숫자로 변하는 흔한 사고를 피하는 순서를 정리합니다.

문제는 잘 옮겨진 것처럼 보일 때입니다. 파일을 열었더니 한글이 이상한 기호로 나오거나, 주민번호처럼 0으로 시작하는 값의 앞자리가 사라져 있는 경우가 흔합니다.
이런 사고는 일부 환경에서는 SQL이 아니라 파일 저장 방식과 엑셀의 자동 변환에서 생깁니다. 그래서 방법 선택부터 짚고 갑니다.
먼저 알아둘 용어 세 개
SQL은 데이터베이스에 "이런 자료를 보여줘"라고 요청하는 언어입니다. 엑셀 함수와 비슷한 느낌인데, 대상이 파일이 아니라 서버에 쌓인 데이터라는 점만 다릅니다.
내보내기 이야기를 하려면 아래 세 단어는 알고 있어야 편합니다.
| 용어 | 뜻 | 비유 |
|---|---|---|
| 쿼리(Query) | 데이터베이스에 보내는 질문 문장 | 사서에게 건네는 요청서 |
| 결과창(Result Grid) | 쿼리 실행 후 표 형태로 나오는 화면 | 사서가 가져다 준 책 목록 |
| CSV | 값을 쉼표로 구분해 저장한 텍스트 파일 | 엑셀과 데이터베이스 사이의 공용 봉투 |
CSV는 확장자만 다른 메모장 파일에 가깝습니다. 서식·수식·색상이 전혀 없고 값만 담기니, 어떤 프로그램에서든 열린다는 장점과 글자 인코딩 사고가 잘 난다는 단점을 같이 안고 있습니다.
세 가지 경로 중 무엇을 고를까
몇백 줄 이하면 복사·붙여넣기, 그 이상이면 도구의 내보내기 기능, 매달 반복하는 작업이면 자동화 쪽이 맞습니다.
쿼리 실행 ↓ 결과창에 표 표시 ↓ ├ 복사 → 엑셀에 붙여넣기 ├ CSV 저장 → 엑셀로 열기 └ Excel 형식 내보내기(도구 지원 시)
| 방법 | 편한 점 | 주의할 점 | 어울리는 상황 |
|---|---|---|---|
| 결과창 복사 | 클릭 두 번, 별도 파일 없음 | 행이 많으면 붙여넣기가 버벅임 | 소규모 확인용 |
| CSV로 저장 | 어떤 도구에서든 지원 | 한글 깨짐·자동 서식 변환 | 대량 데이터, 재가공 |
| 엑셀(xlsx) 내보내기 | 서식이 살아있고 깨짐 걱정 적음 | 도구에 따라 미지원 | 그대로 보고서에 붙일 때 |
세 번째 방법은 DBeaver, HeidiSQL, DataGrip 같은 데이터베이스 접속 프로그램(GUI 클라이언트라고 부릅니다)에 내장된 경우가 많습니다. 지원 여부는 사용 중인 도구의 공식 문서에서 "Export data" 항목을 확인하는 편이 확실합니다.
복사해서 붙여넣는 가장 빠른 길
결과창에서 데이터를 선택해 복사한 뒤 엑셀에 붙여넣으면 표 형태가 그대로 유지됩니다.
- ☐쿼리 실행 후 결과창 왼쪽 위 모서리를 클릭해 전체 선택
- ☐Ctrl+C(맥은 Cmd+C)로 복사
- ☐엑셀 A1 셀에 붙여넣기
- ☐첫 줄에 컬럼 이름이 들어왔는지 확인
컬럼 이름(표의 머리글)이 함께 복사되지 않는 도구도 있습니다. 그럴 때는 결과창에서 마우스 오른쪽 버튼을 눌러 "헤더 포함 복사" 비슷한 메뉴를 찾으면 됩니다.
💡 붙여넣기 직후에는 Ctrl+Z가 아직 통합니다. 엉뚱한 위치에 들어갔으면 되돌리고 다시 붙이세요.
CSV로 저장했더니 한글이 깨질 때
한글 깨짐은 거의 환경에 따라 인코딩 불일치 탓입니다. 인코딩은 글자를 숫자로 바꿔 저장하는 규칙인데, 저장할 때 쓴 규칙과 열 때 쓴 규칙이 다르면 글자가 어긋납니다.
CSV를 저장할 때는 내보내기 창의 인코딩 항목을 확인하세요. 선택지에 UTF-8과 UTF-8 BOM(또는 "with BOM")이 같이 있으면, 엑셀로 열 목적이라면 BOM이 붙은 쪽이 안전합니다. BOM은 파일 맨 앞에 붙는 짧은 표식으로, "이 파일은 UTF-8입니다"라고 엑셀에 알려주는 이름표 역할을 합니다.
이미 저장한 파일이 깨져 보인다면 파일을 더블클릭하지 말고, 엑셀에서 데이터 → 텍스트/CSV 가져오기 메뉴로 불러옵니다. 이 경로에서는 파일 원본 인코딩을 직접 골라 미리보기로 확인합니다.
깨짐이 아니라 값이 바뀌는 사고도 있습니다.
| 증상 | 원인 | 대처 |
|---|---|---|
| 0으로 시작하는 번호의 앞자리 사라짐 | 엑셀이 숫자로 자동 인식 | 가져오기 단계에서 해당 열을 텍스트로 지정 |
| 날짜가 알 수 없는 숫자로 표시 | 날짜 일련번호로 변환 | 열 서식을 날짜로 변경, 또는 SQL에서 문자열로 변환 |
| 한 셀에 여러 값이 뭉침 | 값 안에 쉼표·줄바꿈 포함 | 구분자를 탭으로 바꾸거나 따옴표 묶음 옵션 사용 |
쿼리 단계에서 미리 손봐두면 편한 것
엑셀에서 고치는 대신 SQL에서 정리해두면 매번 손댈 일이 줄어듭니다.
SELECT
order_id AS "주문번호",
customer_name AS "고객명",
COALESCE(memo, '') AS "메모"
FROM orders
WHERE order_date >= '2026-08-01'
ORDER BY order_date DESC;
이 쿼리는 컬럼 이름을 한글 머리글로 바꿔 내보내고, 값이 비어 있는 메모를 빈 문자열로 채웁니다. AS는 별칭을 붙이는 명령이고, COALESCE는 값이 없을 때 대신 쓸 값을 지정하는 함수입니다.
빈 값을 그대로 두면 CSV에 NULL이라는 글자가 그대로 찍히는 도구도 있습니다. 보고서에 바로 쓸 파일이라면 미리 정리하는 편이 낫습니다.
예를 들어 월말마다 주문 내역을 정리하는 사무직이라면, 이렇게 한글 머리글까지 정리한 쿼리를 메모장에 저장해두고 날짜 조건만 바꿔 실행하는 방식이 반복 작업을 크게 줄여줍니다.
자주 막히는 부분
전체가 아니라 일부만 내보내진 경우. 많은 도구가 결과창에 처음 일정 행만 불러옵니다. 화면에 보이는 것만 복사되니, 전체가 필요하면 "모두 가져오기" 버튼을 먼저 누르거나 내보내기 기능을 쓰세요.
행이 너무 많아 엑셀이 멈추는 경우. 엑셀 시트 한 장이 담을 수 있는 행 수에는 상한이 있습니다. 데이터가 그 이상이면 WHERE 조건으로 기간을 나눠 여러 번 뽑거나, 애초에 SQL에서 집계해 요약값만 가져오는 쪽이 현실적입니다.
민감정보가 그대로 나가는 경우. 개인정보가 담긴 파일을 개인 PC나 메신저로 옮기는 건 조직 내부 규정 위반이 될 수 있습니다. 내보내기 전에 필요한 컬럼만 SELECT에 남기는 습관이 안전합니다.
날짜 형식이 사람마다 다르게 보이는 경우. 운영체제 지역 설정에 따라 표시가 달라집니다. 여러 명이 돌려볼 파일이라면 SQL에서 문자열로 고정해 내보내는 편이 헷갈릴 일이 없습니다.
다음에 뭘 해보면 좋을까
한 번 성공한 쿼리는 파일로 저장해두세요. 다음 달에 조건만 바꿔 실행하면 되고, 그게 자동화의 첫 단계입니다.
여기까지 익숙해졌다면 엑셀의 파워 쿼리로 데이터베이스에 직접 연결하는 방법을 살펴볼 만합니다. 파일을 옮기는 과정 자체가 사라지니까요.
사용 중인 도구의 내보내기 옵션 화면은 한 번 천천히 훑어보길 권합니다. 인코딩, 구분자, 헤더 포함 여부 이 세 항목만 알아두면 일부 환경에서는의 사고는 미리 막습니다.
함께 보면 좋은 글
- SQL JOIN 정리: INNER·LEFT·OUTER를 그림으로 이해하기
- SQL WHERE와 GROUP BY 정리: 비개발자가 자주 막히는 문법
- Supabase 502 오류와 응답 지연, 원인 체크 5가지
내보낸 파일이 제대로 됐는지 확인하는 순서
파일이 만들어졌다고 끝난 게 아닙니다. 보고서에 쓰기 전에 아래 항목을 위에서부터 훑어보면 대부분의 사고를 파일 단계에서 잡을 수 있습니다.
- ☐파일을 열었을 때 한글 컬럼명과 값이 모두 정상으로 보이는지 확인
- ☐첫 줄이 컬럼 이름이고, 데이터가 두 번째 줄부터 시작하는지 확인
- ☐마지막 행까지 스크롤해 중간에 끊기지 않았는지 확인
- ☐결과창에 표시된 행 수와 엑셀의 데이터 행 수(머리글 한 줄 제외)가 같은지 대조
- ☐0으로 시작하는 번호, 날짜 컬럼을 몇 개 골라 원래 값과 같은지 눈으로 비교
- ☐한 셀에 여러 값이 뭉쳐 들어간 행이 없는지, 열 개수가 일정한지 확인
- ☐NULL이라는 글자가 그대로 찍힌 칸이 남아 있지 않은지 확인
- ☐SELECT에 남긴 컬럼만 들어 있는지, 불필요한 개인정보 컬럼이 섞이지 않았는지 확인
행 수 대조가 가장 확실한 검증입니다. 결과창 아래쪽이나 상태 표시줄에 조회된 행 수가 나오는 도구가 많으니, 그 숫자를 적어두고 엑셀에서 맞춰보세요. 숫자가 모자라면 결과창이 일부만 불러온 경우이므로 "모두 가져오기" 또는 내보내기 기능으로 다시 뽑습니다.
확인 중 문제를 발견했다면 엑셀에서 손으로 고치지 말고, 원인에 해당하는 앞 단계로 돌아가 다시 내보내는 편이 낫습니다. 글자가 깨졌다면 인코딩 항목, 값이 변했다면 가져오기 단계의 열 서식, 열이 어긋났다면 구분자 설정을 바꾸고 같은 확인 절차를 처음부터 반복합니다.
💡 검증까지 통과한 쿼리는 파일로 저장해두고, 다음에 같은 작업을 할 때 이 확인 목록을 그대로 다시 쓰세요.
'개발 & 기술 > 데이터베이스' 카테고리의 다른 글
| Supabase 502 오류와 응답 지연, 원인 체크 5가지 (0) | 2026.08.01 |
|---|---|
| SQL JOIN 정리: INNER·LEFT·OUTER를 그림으로 이해하기 (0) | 2026.07.26 |
| Chroma vs Pinecone 비교: 벡터 DB 선택 기준 정리 (0) | 2026.07.23 |
| SQL WHERE와 GROUP BY 정리: 비개발자가 자주 막히는 문법 (0) | 2026.07.22 |
| Supabase 무료 요금제 한계, 어디까지 무료로 쓸 수 있을까 (0) | 2026.07.13 |