CSV → SQL 자동 변환 방식
본 도구는 CSV 파일의 첫 번째 줄을 컬럼명으로 사용하고, 나머지 행의 값을 분석해 각 컬럼에 가장 적합한 SQL 데이터 타입을 자동 추론합니다. 단순히 모든 컬럼을 VARCHAR로 만들지 않고, 정수·실수·날짜·불리언을 구분해 데이터 무결성을 높입니다.
타입 추론 우선순위
- 모든 값이 비어있음 → VARCHAR(255) (보수적 기본값)
- 모든 값이 0/1/true/false → BOOLEAN
- 모든 값이 정수 → 값 범위에 따라 SMALLINT/INT/BIGINT
- 모든 값이 숫자(소수점 포함) → DECIMAL(precision, scale)
- 모든 값이 ISO 날짜 또는 YYYY-MM-DD → DATE
- 모든 값이 날짜+시간 → DATETIME / TIMESTAMP
- 그 외 → VARCHAR(N) (최대 길이의 1.5배 또는 TEXT)
DB 방언별 차이점
- MySQL:
AUTO_INCREMENT,DATETIME,BOOLEAN(TINYINT(1)) - PostgreSQL:
SERIAL/BIGSERIAL,TIMESTAMP,BOOLEAN - SQLite:
INTEGER PRIMARY KEY AUTOINCREMENT, dynamic typing - SQL Server:
IDENTITY(1,1),DATETIME2,BIT - Oracle:
GENERATED BY DEFAULT AS IDENTITY,NUMBER,DATE/TIMESTAMP
CSV 작성 시 주의사항
- 첫 줄은 반드시 컬럼명 (한글 가능, 그러나 영문 권장)
- 값에 콤마가 포함되면 큰따옴표로 감싸기:
"홍길동, 박사" - 큰따옴표가 값에 포함되면 두 번 입력:
"He said ""hi""" - 구분자가 콤마가 아닌 경우 상단 옵션에서 변경
- 인코딩은 UTF-8 권장 (한글 깨짐 방지)
자주 묻는 질문 (FAQ)
Q. CSV 파일 업로드가 안 되나요?
A. 본 도구는 텍스트 붙여넣기만 지원합니다. 엑셀에서 셀 영역을 복사한 뒤 텍스트 영역에 그대로 붙여넣으면 탭 구분자로 자동 처리됩니다.
Q. 한글 컬럼명도 됩니까?
A. MySQL/PostgreSQL은 한글 컬럼명을 지원하지만 백틱(`)이나 큰따옴표로 감싸야 합니다. 본 도구는 한글 컬럼을 자동으로 escape 처리합니다.
Q. NULL 값은 어떻게 처리되나요?
A. 빈 셀은 NULL로 처리됩니다. 데이터 행에서 한 번이라도 빈 값이 발견되면 해당 컬럼은 NULL 허용으로 설정됩니다.
Q. INSERT 문에서 SQL 인젝션을 막아주나요?
A. 본 도구는 작은따옴표를 두 개로 이스케이프 처리합니다. 다만 운영 환경에서는 항상 prepared statement를 사용하시기 바랍니다.