CSV 파일
.csv / .tsv / .xlsx를 여기에 놓거나, 클릭해서 선택하세요
매달 하는 일인가요? TableDI 2에서 한 번 하고 작업으로 저장하면, 다음 달에는 다시 실행만 하면 됩니다. TableDI 2 무료 다운로드
업로드하지 않습니다. 파일은 이 탭의 JavaScript가 읽을 뿐 컴퓨터 밖으로 나가지 않습니다 — 어떤 서버도 보지 못하며, 탭을 닫으면 사라집니다.
CSV를 SQL문으로 바꾸는 방법
- CSV 놓기. 구분자(쉼표·세미콜론·탭·파이프)와 인코딩(UTF-8, CP949 등)을 자동으로 감지합니다.
- 테이블 이름과 DB 고르기. 파일 이름이 영문이면 테이블 이름 칸이 자동으로 채워집니다. 한글 파일 이름이면 my_table이 들어가니 직접 고치세요.
- 열 타입 확인. 표에 각 열이 어떤 타입이 됐는지 나옵니다. 실행하기 전에 여기서 확인합니다.
- .sql 받기. 「.sql 받기」로 파일을 받거나 복사해서 콘솔에 붙여넣습니다.
DB의 CSV 가져오기가 답이 안 되는 이유
LOAD DATA INFILE이나 COPY 같은 DB 자체의 CSV 가져오기는 테이블이 먼저 있어야 합니다.
마흔 개 열짜리 내보내기 파일을 눈으로 보며 타입을 정하는 게 시간이 드는 부분이고, 하나라도 틀리면 중간에 실패하거나
더 나쁘게는 전부 VARCHAR(255)로 들어가 버립니다. 이 페이지는 CREATE TABLE을 대신 쓰고, 실행 전에 각 열이 무엇이 됐는지 보여 줍니다.
한글 머리글은 한글 열 이름으로 남습니다
국내 업무 시스템이 내보내는 CSV는 머리글이 고객명, 주문번호, 금액처럼 한글인 게 보통입니다.
여기서는 한글 머리글을 영문으로 바꾸거나 지우지 않고 그대로 열 이름으로 씁니다. 식별자는 항상 따옴표로 감싸서 내보내므로
(MySQL은 백틱, PostgreSQL·SQLite는 큰따옴표, SQL Server는 대괄호) 네 가지 DB 모두에서 올바른 문장입니다.
공백은 밑줄로 바뀌고, 같은 이름이 두 번 나오면 금액, 금액_2가 됩니다.
SQL Server용 문자열에는 N'…' 접두사를 붙이고 문자열 열은 NVARCHAR로 만들어 한글이 ?로 바뀌지 않게 합니다.
MySQL에서는 CREATE TABLE에 문자 집합을 적지 않으므로 DB나 테이블의 기본값이 utf8mb4인지 먼저 확인하세요.
타입 추론이 정하는 것
- 앞자리가 0인 번호는 텍스트.
00012345나03058이 들어 있는 열은 수량이 아니라 식별자이므로 문자열 타입이 됩니다. - 천 단위 쉼표는 떼고 숫자로.
8,600은 따옴표 친 문자열이 아니라 DECIMAL 열의8600이 됩니다. - 날짜는
2026-09-15모양만. 이 모양(시각이 붙어도 됨)으로만 채워진 열은 TIMESTAMP(SQL Server는 DATETIME2)가 됩니다. - 참/거짓은 DB에 맞게. MySQL·PostgreSQL·SQLite는
TRUE/FALSE, SQL Server의 BIT는1/0. - 문자열 길이는 그 열의 가장 긴 값에 맞춰 넉넉히 올림합니다. 모든 열에 VARCHAR(255)를 주지 않습니다.
INSERT는 여러 행씩 묶어서
한 행에 한 문장이면 느리고, 전부를 한 문장에 넣으면 서버의 패킷·파라미터 한도에 걸립니다. 기본은 한 문장에 500행이고, DB가 허용하는 한도(SQL Server는 1,000행) 안에서 고를 수 있습니다. 큰 파일도 다룰 만한 개수의 문장으로 나옵니다.
이 도구가 하지 않는 일
- 한국식 날짜 읽기.
2026. 9. 15.,2026/09/15,2026년 9월 15일은 날짜로 인식하지 않고 문자열 열로 남깁니다. 날짜 타입이 필요하면 원본에서2026-09-15형식으로 내보내세요. - 통화 표시가 붙은 금액.
₩8,600이나8,600원처럼 기호나 「원」이 붙은 값이 섞인 열은 숫자가 아니라 문자열이 됩니다. - 문자 집합 지정.
CHARSET이나COLLATE는 쓰지 않습니다. - DB에 직접 넣기. SQL문을 만들 뿐, 어디에도 접속하지 않습니다.
같은 CSV가 매달 와서 매번 같은 테이블에 들어가야 한다면, 그건 한 번의 변환이 아니라 반복 작업입니다. TableDI 2는 매 기간 다시 해야 하는 파일 작업을 위한 데스크톱 앱입니다. 원본·규칙·전달 방식을 하나의 작업으로 저장해 두므로, 다음 달에는 새 파일을 넣고 다시 실행하기만 하면 됩니다. 모든 처리는 내 컴퓨터 안에서 이루어집니다.
자주 묻는 질문
어떤 DB에서 쓸 수 있나요?
MySQL과 MariaDB, PostgreSQL, SQLite, SQL Server입니다. 고른 DB에 따라 식별자 따옴표, 참/거짓 표기, 문자열·날짜 타입, 한 INSERT문에 넣을 수 있는 최대 행 수가 달라집니다.
CP949로 저장된 CSV도 한글이 안 깨지나요?
읽으면서 인코딩을 감지하므로 UTF-8, CP949(EUC-KR) 모두 한글이 제대로 들어갑니다. 감지는 확률적이라 행이 아주 적은 파일에서는 틀릴 수 있으니, 열 타입 표의 한글 열 이름이 제대로 보이는지 확인하세요.
CREATE TABLE 없이 INSERT문만 받을 수 있나요?
됩니다. 「CREATE TABLE 포함」을 끄세요. 테이블이 이미 있고 행만 넣으면 될 때 씁니다.
숫자처럼 보이는 열이 왜 문자열 타입이 됐나요?
그 열에 앞자리가 0인 값이 하나라도 있거나, 「원」·₩ 같은 글자가 붙은 값이 섞여 있기 때문입니다. 앞의 경우는 식별자라서 일부러 그렇게 하고, 뒤의 경우는 원본에서 숫자만 남기면 DECIMAL이 됩니다.
얼마나 큰 파일까지 되나요?
한도는 브라우저 탭의 메모리입니다. 미리보기는 SQL의 앞 20,000자만 보여 주고 받은 파일에는 전부 들어갑니다. 수백 MB짜리 파일이라면 DB 자체의 대량 적재 기능이 맞고, 이 페이지는 거기에 필요한 CREATE TABLE을 쓰는 데 유용합니다.
파일이 업로드되나요?
아니요. 파일은 이 탭 안에서만 읽고 SQL도 이 탭 안에서 만듭니다.
관련 페이지
매달 하는 일인가요?
TableDI 2에서 한 번 해 보고 작업으로 저장합니다. 다음 달에는 새 파일을 넣고 다시 실행하면 됩니다.
macOS(Apple 실리콘·Intel). Windows 버전은 준비 중입니다(그동안 할 수 있는 일). 무료 버전은 체험판이 아닙니다 — 계정도 카드도 필요 없습니다.
2026-09-11 TableDI 팀이 마지막으로 확인했습니다. 이 페이지에 잘못된 내용이 있나요? 알려주세요 — 받은편지함은 하나이고, TableDI를 만드는 사람이 읽습니다.